- data a;
- input name $ com $ date date9.;
- format date date9.;
- cards;
- Jiang AAA 23Oct2011
- Jiang AAA 21Oct2012
- Li AAA 23Oct2011
- Li AAA 20Dec2011
- Li AAA 23Oct2012
- Zhang AAA 23Oct2011
- Zhang BBB 28Oct2011
- Zhang AAA 21Oct2012
- Tian AAA 23Oct2011
- Tian BBB 28Oct2011
- Tian AAA 28Oct2012
- ;
- **** Sort data;
- proc sort data=a;
- by name date;
- run;
- **** Add a flag to catch the company change;
- data b;
- set a;
- by name date;
- com1=lag(com);
- if first.name then flag=1;
- else if com~=com1 then flag+1;
- drop com1;
- run;
- ****self join to remove the name;
- proc sql;
- create table c as
- select * from a where name not in
- (
- select b1.name from b as b1 inner join b as b2
- on b1.name=b2.name and b1.com=b2.com and b1.flag~=b2.flag
- and 0<b1.date-b2.date<365
- );
- quit;