如何比较日期列与上一行相同的值?
我有一个包含以下数据的数据集:
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
如何完成此任务?
答案 0 :(得分:0)
您可以使用LAG()
功能轻松地做到这一点。
使用BY组处理来确保您在第一次观察新组时不使用上一个组的日期。
data want ;
set have ;
by NR ;
datebefore=lag(date);
if first.nr then datebefore=.;
format datebefore date9.;
run;
请确保对每个观察都运行LAG()函数,因为它不会返回前一个观察的值,而是返回前一次执行该LAG()函数调用的值。