Track changes in the rows to get a new variable in Matlab
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Azzi Abdelmalek
2014-8-9
编辑:Azzi Abdelmalek
2014-8-9
What if
change2=[2009 1 42
2010 1 42
2011 1 559
1995 12 100
2000 12 100
2000 12 111
2000 12 141
2000 15 124
2003 12 100]
采纳的回答
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 个评论
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!