Combine duplicates in a cell array
1 view (last 30 days)
Show older comments
Anirudh Peralai Ravisundar
on 15 May 2020
Commented: Ameer Hamza
on 16 May 2020
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.
0 Comments
Accepted Answer
Ameer Hamza
on 16 May 2020
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 Comments
Ameer Hamza
on 16 May 2020
I am glad to be of help!
Yes, splitapply can be a very useful tool if applied correctly.
More Answers (0)
See Also
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!