数据步骤,用于比较日期值与其先前的行值

时间:2019-04-11 16:13:31

标签: sas

如何比较日期列与上一行相同的值?

我有一个包含以下数据的数据集:

 Nr            Date               DocumentDate
 1              17APR2019          3APR2019       
 1              31MAY2019          6APR2019
 1              26APR2019         18APR2019
 2              22APR2019          5APR2019
 2               1MAY2019          6APR2019
 2              14APR2019          8APR2019

DocumentDate是该行输入数据集的日期。

我想用以下信息完成另一个数据集。此数据集跟踪“日期”列的更改方式。

 Order   DateBefore       NewDate           DocumentDate
 1          .              17APR2019        3APR2019
 1       17APR2019         31MAY2019        6APR2019
 1       31MAY2019         26APR2019       18APR2019
 2           .             22APR2019        5APR2019
 2       22APR2019          1MAY2019        6APR2019
 2        1MAY2019         14APR2019        8APR2019

如何完成此任务?

1 个答案:

答案 0 :(得分:0)

您可以使用LAG()功能轻松地做到这一点。

使用BY组处理来确保您在第一次观察新组时不使用上一个组的日期。

data want ;
  set have ;
  by NR ;
  datebefore=lag(date);
  if first.nr then datebefore=.;
  format datebefore date9.;
run;

请确保对每个观察都运行LAG()函数,因为它不会返回前一个观察的值,而是返回前一次执行该LAG()函数调用的值。