How to aggregate elements of a cell array in Matlab

5 views (last 30 days)
I have a celL-type variable with 1 row and 17 columns that represent years. Each of the elements of the last is another cell-array with 15 columns and about 30 000 rows. These cell arrays, one for each year, are sorted by C2 and to the each firm match different codes (C3), for example:
C1 C2 C3 C4 C5
1997 AA 123 7863 0,4
1997 AA 45 3421 0,8
1997 GP 45 789 1,2
1997 GP 3 63 0,1
1997 GP 9124 597 0,9
1997 NU 123 7863 0,6
1997 NU 45 789 0
1997 NU 9124 81 0,8
1997 ZT 123 7863 0,4
1997 ZT 3 63 0,3
I am trying to aggregate the information based on C3, so at this example I would obtain:
C3 C1 C2 C4 C5
3 1997 GP 63 0,1
3 1997 ZT 63 0,3
45 1997 AA 3421 0,8
45 1997 GP 789 1,2
45 1997 NU 789 0
123 1997 AA 7863 0,4
123 1997 NU 7863 0,6
123 1997 ZT 7863 0,4
9124 1997 GP 597 0,9
9124 1997 NU 81 0,8
Can someone help me? Thank you.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 18 Jul 2014
Edited: Azzi Abdelmalek on 18 Jul 2014
If you mean how to sort your data
v={'C1' 'C2' 'C3' 'C4' 'C5'
1997 'AA' 123 7863 0.4
1997 'AA' 45 3421 0.8
1997 'GP' 45 789 1.2
1997 'GP' 3 63 0.1
1997 'GP' 9124 597 0.9
1997 'NU' 123 7863 0.6
1997 'NU' 45 789 0
1997 'NU' 9124 81 0.8
1997 'ZT' 123 7863 0.4
1997 'ZT' 3 63 0.3}
w=v(:,[3 1 2 4 5])
out=[w(1,:); sortrows(w(2:end,:))]
If you were working with tables
w=cell2table(v(2:end,:),'VariableNames',v(1,:))
w=w(:,[3 1 2 4 5]),
out=sortrows(w,[3 1 2 4 5])
  1 Comment
Maria
Maria on 18 Jul 2014
Thanks it worked,I just made a small change. I guess it is more simple like this, but I believe it's working. Thanks.
out= sortrows(w,1);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!