Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************version 1***************/
- proc iml;
- use duality;
- read all var {index} into x;
- read all var {year} into y;
- z=j(nrow(x),2,.);
- m=1;
- do i=2 to nrow(y);
- if x[i,1]=x[i-1,1] & y[i,1]-y[i-1,1]=1 then do;
- z[i,1]=m+1;
- m=m+1;
- end;
- else do;
- m=1;
- end;
- if z[i,1]>=5 then do; /* at least 5 years consecutively, can be modified*/
- do j=0 to z[i,1]-1;
- z[i-j,2]=1;
- end;
- end;
- end;
- cname={'consecutive' 'filter'} ;
- create out from z[colname=cname];
- append from z;
- quit;
- data new;
- merge duality out;
- if filter=1; /* filter*/
- run;
- /*******version 2************/
- proc iml;
- use duality;
- read all var {index} into x;
- read all var {year} into y;
- z=j(nrow(x),2,.);
- m=1;
- do i=2 to nrow(y);
- if x[i,1]=x[i-1,1] & y[i,1]-y[i-1,1]=1 then do;
- z[i,1]=m+1;
- m=m+1;
- end;
- else do;
- m=1;
- end;
- j=i;
- do while (z[j,1]^=.);
- z[j,2]=z[i,1];
- j=j-1;
- if z[j,1]=. then z[j,2]=z[j+1,2];
- end;
- end;
- cname={'consecutive' 'filter'} ;
- create out from z[colname=cname];
- append from z;
- quit;
- data new;
- merge duality out;
- if filter>=5; /*at least 5 year*/
- run;
Add Comment
Please, Sign In to add comment