Track changes in the rows to get a new variable in Matlab

1 ビュー (過去 30 日間)
Maria
Maria 2014 年 8 月 9 日
コメント済み: Azzi Abdelmalek 2014 年 8 月 9 日
I have a double variable called 'change2' with 3 columns and 40000 rows. The variable is sorted by c2 and then date (c1).
c1 c2 c3
change2=[2009 1 42
2010 1 42
2011 1 559
1995 12 100
2000 12 100
2000 12 111
2003 12 100...]
I would like to get a new variable that has the first row in which a code from c2 appears for the first time and then the rows in which you observe a change in c3 for the same c2. For instance:
c1 c2 c3
change2=[2009 1 42
2011 1 559
1995 12 100
2000 12 111
2003 12 100...]
Can someone help? Thanks
  2 件のコメント
Maria
Maria 2014 年 8 月 9 日
That is impossible. Your last row would have to be next to the other rows that have in c2 the value 12. So changing the order of your two last rows, I would get:
change2=[2009 1 42
2011 1 559
1995 12 100
2000 12 111
2000 12 141
2003 12 100
2000 15 124
]

サインインしてコメントする。

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 9 日
編集済み: Azzi Abdelmalek 2014 年 8 月 9 日
Edit2
change2=[2009 1 42
2010 1 42
2011 1 559
1995 12 100
2000 12 100
2000 12 111
2000 12 111
2000 12 141
2003 12 100
2003 15 124]
c2=change2(:,2);
c3=change2(:,3);
ii=[1 ;diff(c2)~=0]
jj=[1 ;diff(c3)~=0]
change2(~any([ii jj],2),:)=[]
%or in one line
change2(~any([[1 ;diff(change2(:,2))~=0 ] [1 ;diff(change2(:,3))~=0]],2),:)=[]
  2 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 9 日
I have edited the answer

サインインしてコメントする。

その他の回答 (0 件)

製品

Community Treasure Hunt

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

Start Hunting!

Translated by