首页 > 解决方案 > SAS 94 如何计算距离下一条记录的天数

问题描述

使用 SAS 我希望能够计算两个日期之间的天数,其中的值是距离下一条记录的天数。

所需的输出将是:

Date       Num Days
10/09/2020     1
11/09/2020     1
12/09/2020     1
14/09/2020     2
15/09/2020     1
16/09/2020     1
17/09/2020     1
18/09/2020     1
20/09/2020     2

我曾尝试使用 Lag 和 Retain,但无法正常工作。

任何意见和建议将不胜感激。

标签: datesasretain

解决方案


如果您按 DATE 降序对数据进行排序,则更容易,因为您只需向后查找即可找到下一个日期。所以你可以使用 LAG() 或 DIF() 函数。

data want;
   set have;
   by descending date;
   num_days = dif(date);
run;

要模拟“领先”功能,您可以设置另一个数据副本以跳过第一次观察。

data want;
   set have ;
   set have(firstobs=2 keep=date rename=(date=next_date)) have(obs=1 drop=_all_);
   num_days = next_date - date;
run;

推荐阅读