SAS:保持具有指定日期间隔的观察

时间:2013-02-11 18:19:34

标签: sas sas-macro

我有一个看起来像这样的数据集:

    Unique_ID Date    
    1         03/23/1995
    1         03/27/1995
    1         04/14/1995
    1         08/29/1995
    1         02/14/1996
    .         .
    .         .
    .         .
    1         03/19/1997
    2         10/20/1993
    .         .
    .         .
    .         .
    2         04/20/2000

在每个Unique_ID中,我只需保留那些与第一次观察开始时相隔至少3个月的观察结果(我的数据集按Unique_ID和日期排序)。例如,在Unique_ID 1中,我需要保留从1995年3月23日起至少90天的下一次观察,然后是从那天起90天的下一次观察,依此类推。任何人都可以用宏或某种循环指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

data want;
   set have;
      by ID;
   retain date2find;
   if first.ID then do;
      output;   /* This statement will include the first obs from each    */
                /* set of IDs if desired.  If not, delete this statement. */
      date2find = DATE + 90;
      end;

   if DATE >= date2find then do;
      output;                /* Output the found record    */
      date2find = DATE + 90; /* Re-set to date to be found */
      end;
   drop date2find;
run;

这取决于您按照描述(按ID和DATE)

进行排序的数据集