我试图确定最近连续四年发生的事件。假设我有以下示例。
Rungroup Year
1 2003
1 2004
1 2005
1 2006
1 2008
1 2009
2 2003
2 2004
2 2005
2 2007
2 2008
2 2009
3 2003
3 2004
基于以下代码,我要删除至少四年不连续的年份。此方法有两个步骤。第一步是将序列号赋予连续的年份。第二步基于前瞻方法。
data have;
set have;
by rungroup;
lyear=lag(year);
if first.rungroup then lyear=.;
if year =1+ lyear then group1+1;
else group1=0;
run;
data have3;
set have2;
by rungroup;
set have2 ( firstobs = 2 keep = group1 rename = (group1 = next2) )
have2 ( obs = 1 );
next2 = ifn( last.rungroup,(.),next2 );
set have2 ( firstobs = 3 keep = group1 rename = (group1 = next3) )
have2 ( obs = 2 );
next3 = ifn( last.rungroup,next3 );
set have2 ( firstobs = 4 keep = group1 rename = (group1 = next4) )
have2 ( obs = 3 );
next4 = ifn( last.rungroup,next4);
if next4>=3 or next3>=3 or next2>=3 or group1>=3 then output;
run;
这是识别连续观察结果的有效方法吗?任何评论将不胜感激。