#sas
#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:
Вы можете сделать это легко с помощью LAG()
функции.
Используйте групповую обработку, чтобы убедиться, что вы не используете дату из предыдущей группы при первом наблюдении новой группы.
data want ;
set have ;
by NR ;
datebefore=lag(date);
if first.nr then datebefore=.;
format datebefore date9.;
run;
Обязательно запускайте функцию LAG() при каждом наблюдении, поскольку она НЕ возвращает значение из предыдущего наблюдения, а вместо этого возвращает значение из предыдущего выполнения этого вызова функции LAG().