How to aggregate elements of a cell array in Matlab

조회 수: 6 (최근 30일)
Maria
Maria 2014년 7월 18일
댓글: Maria 2014년 7월 18일
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.

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 7월 18일
편집: Azzi Abdelmalek 2014년 7월 18일
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
Maria
Maria 2014년 7월 18일
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);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Call C++ from MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by