Как найти продолжительность между наблюдениями для каждой группы в SAS? - PullRequest
0 голосов
/ 10 мая 2019

Я хотел бы рассчитать продолжительность между наблюдениями по группам. До сих пор я пытался использовать лаги в шаге данных с оператором by. Однако это не создает желаемых результатов.

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

Спасибо!

    Group       Date       Difference
  Group 1    August 1         - 
  Group 1    August 3         2
  Group 1    August 6         3
  Group 1    August 10        4
  Group 2    Sept 1           -
  Group 2    September 20     19
  Group 2    September 25     5 
  Group 3     June 1          -
  Group 3     June 5          4

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Вы можете использовать несколько функций, чтобы получить желаемый результат.Как упоминалось в другом ответе, вы можете использовать функцию dif, которая будет возвращать current_obs-previous_obs в наборе данных.В качестве альтернативы вы можете использовать оператор retain.

proc sort data=have;
by group date;
run;

data want(drop=last_date);
set have;
by group date;
retain last_date;
if first.date then Difference = .;
else Difference = date - last_date;
* Set the variable last_date equal to the current date;
last_date = date;
run;

Если вы опустите drop=, значение last_date будет последним значением даты.

0 голосов
/ 10 мая 2019
data want;
   set have;
   by group notsorted;
   difference=dif(date);
   if first.group then difference=.;
run;
...