SAS中日期的差异

时间:2015-04-29 14:26:31

标签: sas

以下列形式考虑数据集 test

 Group   Date
  1      05JAN2014
  1      08JAN2014
  1      14JAN2014
  2      05JAN2013
  2      10FEB2015
  2      27FEB2015

我想根据群体计算日期的差异。以下代码记录了每两个日期之间的差异:

  data test;
  datediff = dif(Date);
  run;

我如何只考虑一组中日期之间的差异?此外,有没有办法区分每组中的最后和第一个日期?

1 个答案:

答案 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;