SAS-识别连续的观察

我试图确定最近连续四年发生的事件。假设我有以下示例。

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;

这是识别连续观察结果的有效方法吗?任何评论将不胜感激。

luoyelhj 回答:SAS-识别连续的观察

如果您的目标是标记同一组中至少4年的连续序列中的所有obs部分,那么这是一种方法

export function fetchData(id) {

    return function(dispatch) {

        REST.jsonRestGet(`data/sos/${id}`,Data.prepareSosData(
                (data) => {
                 console.log(data);
                return data; // returns undefined
                }))
    }
}
本文链接:https://www.f2er.com/3162946.html

大家都在问