How to get the average of a subset of data in a matrix?
3 views (last 30 days)
Show older comments
I am having some difficulty finding the average of some subsets of data. For example, given the following matrix:
ItemA 7
ItemA 8
ItemA 9
ItemB 10
ItemB 12
ItemB 14
ItemC 8
ItemC 16
ItemC 0
Given the above data, I would like to find the average of item A, B, and C individually. So it should return that Item A the average is 8, Item B the average is 12, and item C the average is 8.
The above data is just an example, the actual data is many more items so I need it to work for an unknown amount of items.
If you have any questions feel free to ask,
Thanks
7 Comments
Accepted Answer
Andrei Bobrov
on 5 Nov 2013
C = {'ItemA' 1 3
'ItemA' 2 5
'ItemA' 3 2
'ItemB' 2 4
'ItemB' 1 3
'ItemC' 2 9
'ItemC' 9 2};
[a,ii,ii] = unique(C(:,1));
[j1,j2] = ndgrid(ii,1:2);
b = cat(1,C{:,2:3});
out = [a, accumarray([j1(:),j2(:)],b,[],@(x){mean(x)})];
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!