Шаг данных для сравнения значения даты с предшествующим значением строки - PullRequest
0 голосов
/ 11 апреля 2019

Как я могу сравнить столбец Дата с тем же значением, но в предыдущей строке?

У меня есть набор данных со следующими данными:

 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 голосов
/ 11 апреля 2019

Вы можете сделать это легко, используя функцию LAG().

Используйте обработку группы BY, чтобы убедиться, что вы не используете дату из предыдущей группы при первом наблюдении за новой группой.

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

Обязательно запускайте функцию LAG () для каждого наблюдения, так как она НЕ возвращает значение из предыдущего наблюдения, а вместо этого возвращает значение из предыдущего выполнения этого вызова функции LAG ().

...