- data a;
- do i="01Jan2010"d to "20Jan2010"d by 1;
- if i^="02Jan2010"d and i^="04Jan2010"d and i^="10Jan2010"d and i^="17Jan2010"d then output;
- end;
- format i yymmdd10.;
- run;
- proc sort data=a;
- by i;
- run;
- quit;
- data b;
- retain j grp cnt;
- set a;
- by i;
- if _N_=1 then do;
- j=i;
- grp=0;
- cnt=1;
- end;
- else do;
- if i-j=1 then do;
- cnt+1;
- end;
- else do;
- grp+1;
- cnt=1;
- end;
- j=i;
- end;
- drop j;
- run;
- proc sql;
- create table c as
- select
- a.i
- from b a
- inner join (select grp,max(cnt) as max from b group by grp having max>=4) b
- on a.grp=b.grp
- ;
- quit;
复制代码没认真测,貌似是对的
如果需要按交易日来识别连续日期,那么一开始用一张交易日表
结构为key+trading_date 其中key为连续自然数
用key替换i就可以了