以下列形式考虑数据集 test
:
Group Date
1 05JAN2014
1 08JAN2014
1 14JAN2014
2 05JAN2013
2 10FEB2015
2 27FEB2015
我想根据群体计算日期的差异。以下代码记录了每两个日期之间的差异:
data test;
datediff = dif(Date);
run;
我如何只考虑一组中日期之间的差异?此外,有没有办法区分每组中的最后和第一个日期?
答案 0 :(得分:3)
以下是使用lag
和新ifn
函数的方法,(ifn
包含在SAS 9.2或更高版本中)。对滞后函数要小心,因为它有时会产生一些意想不到的结果。有关详细信息,请参阅this paper。
*Data must be sorted to use BY groups;
proc sort data=have; by group date;run;
data want;
set have;
by group;
dateDiff = ifn(first.group, . , dif(date));
retain firstDate;
if first.group then firstDate = date;
if last.group then dateDiff_all = date - firstDate;
run;