Combine duplicates in a cell array

I have a huge cell array. Column 1 has duplicate material numbers. Column 3, 4 contains numbers that I want to add. Column 2 contain either texts or alphanumerals which I just want to retain.
'Material Number' 'Material Description' 'Quantity withdrawn' 'Value Withdrawn'
107552 Material A 5 $40
18042 Material 5B 1 $90
107552 Material A 1 $8
Desired Output:
'Material Number' 'Material Description' 'Quantity withdrawn' 'Value Withdrawn'
107552 Material A 6 $48
18042 Material 5B 1 $90
I'm not sure how to do this in case of celltype. I tried with just number (double) and it worked.

 采纳的回答

Try this example
C = {107552, 'Material A', 5, 40; ...
18042, 'Material 5B', 1, 90; ...
107552, 'Material A', 1, 8};
ids = [C{:,1}].';
result = splitapply(@(x) {[x(1,1:2) sum([x{:,3}]) sum([x{:,4}])]}, C, findgroups(ids));
result = vertcat(result{:});
Result
>> result
result =
2×4 cell array
{[ 18042]} {'Material 5B'} {[1]} {[90]}
{[107552]} {'Material A' } {[6]} {[48]}

2 个评论

Thanks a lot. It works. I just need to study more about splitapply to use to elsewhere.
I am glad to be of help!
Yes, splitapply can be a very useful tool if applied correctly.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Call Python from MATLAB 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by