我有一个看起来像这样的数据集:
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天的下一次观察,依此类推。任何人都可以用宏或某种循环指出我正确的方向吗?
答案 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)
进行排序的数据集