我想按组计算观察之间的持续时间。到目前为止,我已经尝试在带有by语句的datastep中使用滞后。然而,这并不是创建我想要的结果。
假设我从Group和Date开始,如何创建一个差异列,如下所示?
谢谢!
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发布于 2019-05-10 21:03:06
data want;
set have;
by group notsorted;
difference=dif(date);
if first.group then difference=.;
run;发布于 2019-05-10 22:32:59
您可以使用几个函数来获得所需的结果。正如在另一个答案中提到的,您可以使用dif函数,该函数将返回dataset中的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;如果省略日期,last_date的值将是drop=的最后一个值。
https://stackoverflow.com/questions/56077498
复制相似问题