Track changes in the rows to get a new variable in Matlab
    5 views (last 30 days)
  
       Show older comments
    
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 Comments
  Azzi Abdelmalek
      
      
 on 9 Aug 2014
				
      Edited: Azzi Abdelmalek
      
      
 on 9 Aug 2014
  
			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]
Accepted Answer
  Azzi Abdelmalek
      
      
 on 9 Aug 2014
        
      Edited: Azzi Abdelmalek
      
      
 on 9 Aug 2014
  
      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 Comments
More Answers (0)
See Also
Categories
				Find more on Time Series Objects in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!