制作/比较日期范围的更好方法?
问题描述:
我经常拥有包含date1和date2的数据。 Date1是我们猜测将有事件和日期2事件的日期。我通常需要制作2个虚拟变量,其中我增加了日期1向前和向后,然后与其他2进行比较。但是,我始终认为必须有更好的方式来创建日期范围,然后与第二个日期进行比较!制作/比较日期范围的更好方法?
有没有办法在sas中做到这一点?基本上,我想借此日期1和date2,使这个数据集,我想知道,如果我必须创建2个额外的变量(date1-7天,日期1 + 7天) 输入datset:
DATE1 DATE2
10/23/2014 2/12/2015
2/12/2015 2/10/2015
电流输出:
DATE1_wk_before Date1_wk_after日期2 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天减去,这似乎是一个不好的方法来做到这一点。
答
您似乎只是想根据条件设置变量的值。没有必要让太聪明了吧,只是if
和else
在你的数据步骤:
if date2 ge date1-7 and date2 le date1+7 then ind=1;
else ind=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;
答
if abs(date2-date1)<7 then ind=1; else ind=0;
你不为你在做什么这里提供足够的信息 - 这并没有真正意义。请提供示例初始数据集,然后提供您想要确定的内容以及最终期望的数据集,以及您现在使用的代码。 – Joe 2015-03-30 19:55:18