Guest User

Untitled

a guest
Jun 27th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 1.16 KB | None | 0 0
  1. /******************version 1***************/
  2. proc iml;
  3. use duality;
  4. read all var {index} into x;
  5. read all var {year} into y;
  6. z=j(nrow(x),2,.);
  7. m=1;
  8.  do i=2 to nrow(y);
  9.     if x[i,1]=x[i-1,1] & y[i,1]-y[i-1,1]=1 then do;
  10.       z[i,1]=m+1;
  11.       m=m+1;
  12.      end;
  13.     else do;
  14.     m=1;
  15.     end;
  16.  
  17.   if z[i,1]>=5 then do;   /* at least 5 years consecutively, can be modified*/
  18.     do j=0 to z[i,1]-1;
  19.      z[i-j,2]=1;
  20.     end;
  21.  end;
  22. end;
  23.  
  24. cname={'consecutive' 'filter'} ;
  25. create out from z[colname=cname];
  26. append from z;
  27. quit;
  28.  
  29. data new;
  30. merge duality out;
  31. if filter=1;  /* filter*/
  32. run;
  33.  
  34.  
  35.  
  36.  
  37.  
  38. /*******version 2************/
  39.  
  40. proc iml;
  41. use duality;
  42. read all var {index} into x;
  43. read all var {year} into y;
  44. z=j(nrow(x),2,.);
  45. m=1;
  46.  do i=2 to nrow(y);
  47.     if x[i,1]=x[i-1,1] & y[i,1]-y[i-1,1]=1 then do;
  48.       z[i,1]=m+1;
  49.       m=m+1;
  50.      end;
  51.     else do;
  52.     m=1;
  53.     end;
  54.  
  55.     j=i;
  56.     do while (z[j,1]^=.);
  57.      z[j,2]=z[i,1];
  58.      j=j-1;
  59.      if z[j,1]=.  then z[j,2]=z[j+1,2];
  60.  end;
  61.  end;
  62. cname={'consecutive' 'filter'} ;
  63. create out from z[colname=cname];
  64. append from z;
  65. quit;
  66.  
  67. data new;
  68. merge duality out;
  69. if filter>=5; /*at least 5 year*/
  70. run;
Add Comment
Please, Sign In to add comment