我经常拥有date1和date2的数据。 Date1是我们猜测将有事件和date2事件的日期。我通常需要制作2个虚拟变量,其中我将date1向前递增一周,然后向后递增,然后与其他2进行比较。但是我一直认为必须有更好的方法来创建日期范围,然后与第二个日期进行比较!
有没有办法在sas中这样做?基本上我想采取date1和date2并制作这个数据集,我想知道我是否必须创建2个额外的变量(date1-7天和date1 + 7days) 输入数据集:
DATE1 DATE2
10/23/2014 2/12/2015
2/12/2015 2/10/2015
当前输出:
DATE1_wk_before Date1_wk_after Date2 In_range_indicator
10/16/2014 10/30/2014 2/12/2015 0
2/05/2015 2/19/2015 2/10/2015 1
如果日期在范围内,则In_range_indicator = 1,如果不在范围内,则为0
我想知道我是否可以在我做某事的地方做到这一点 In_range_indicator = 1其中Date2在范围内(date1之前的一周,date1之后的一周),而不创建2个额外的数据集。这似乎是浪费时间。
我正在添加7天并减少前后7天,这似乎是一个糟糕的方法。
答案 0 :(得分:0)
您似乎只想根据条件设置变量的值。无需过于聪明,只需在数据步骤中if
和else
:
if date2 ge date1-7 and date2 le date1+7 then ind=1;
else ind=0;
答案 1 :(得分:0)
同意@DWal,简单的if和else语句可以提供帮助。您也可以使用IFN功能。
data mydates;
infile datalines missover;
input (date1-date2) (:mmddyy10.);
In_range_indicator=ifn( date1-7 <= date2 <= date1+7 , 1,0);
format date1-date2 yymmdd10.;
datalines4;
10/23/2014 2/12/2015
2/12/2015 2/10/2015
;;;;
run;
proc print data=mydates;run;
答案 2 :(得分:0)
if abs(date2-date1)<7 then ind=1; else ind=0;