Дата начала и окончания SAS от последовательного прогона - PullRequest
1 голос
/ 30 июня 2019

У меня есть набор данных о клиентах, покупающих товары несколькими партиями подряд в течение года, например, Клиент А покупает 1 января, 2 января и 3 января, останавливается, затем снова покупает 1 февраля, 2 февраля и 3 февраля.

Я хочу записать первую и последнюю дату каждой последовательной партии для каждого клиента (поэтому обычный MIN / MAX будет пропускать партии между датами).

Я экспериментировал с RETAIN и LAG и уже близко, но это не совсем то, что я хочу.

Как создать запрос, который будет отображать две строки для клиента A?то есть строка 1 показывает дату начала 1 января и дату окончания 3 января;строка 2 с указанием даты начала 1 февраля и даты окончания 3 февраля.

1 Ответ

2 голосов
/ 30 июня 2019

Вы просите сгруппировать значения, основываясь на наличии разрыва между датами. Так что проверьте это и создайте новую переменную номера группы. Затем вы можете использовать эту новую группирующую переменную в своем анализе.

data want ;
  set have ;
  by id date;
  dif_days = dif(sales_date);
  if first.id then group=1;
  else if dif_days > 1 then group+1;
run;

Вы можете отрегулировать количество дней в последнем операторе IF, чтобы настроить размер пропуска, который вы хотите разрешить, и по-прежнему рассматривать события как часть одной и той же группы.

...