例如
Subject Date
1 2/10/13
1 2/15/13
1 2/27/13
1 3/15/13
1 3/29/13
2 1/11/13
2 1/31/13
2 2/15/13
我只需要日期介于30以上的科目。
必需的输出:
Subject Date
1 2/10/13
1 3/15/13
2 1/11/13
2 2/15/13
答案 0 :(得分:3)
这是一个非常有趣的问题。我将在DATA步骤中使用retain语句。
由于我们试图比较不同观察之间的日期,因此更难一些。我们可以利用SAS可以将日期转换为SAS日期值(即1960年1月1日之后的天数)的事实。然后我们可以使用条件语句比较这些数值。
data work.test;
input Subject Date anydtdte15.;
sasdate = Date;
retain x;
if -30 <= sasdate - x <= 30 then delete;
else x = sasdate;
datalines;
1 2/10/13
1 2/15/13
1 2/27/13
1 3/15/13
1 3/29/13
2 1/11/13
2 1/31/13
2 2/15/13
;
run;
proc print data=test;
format Date mmddyy8.;
var Subject Date;
run;
根据需要输出:
Obs Subject Date
1 1 02/10/13
2 1 03/15/13
3 2 01/11/13
4 2 02/15/13