首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SAS中按组查找每个观察值之间的持续时间?

如何在SAS中按组查找每个观察值之间的持续时间?
EN

Stack Overflow用户
提问于 2019-05-10 20:12:22
回答 2查看 31关注 0票数 0

我想按组计算观察之间的持续时间。到目前为止,我已经尝试在带有by语句的datastep中使用滞后。然而,这并不是创建我想要的结果。

假设我从Group和Date开始,如何创建一个差异列,如下所示?

谢谢!

代码语言:javascript
复制
    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
EN

回答 2

Stack Overflow用户

发布于 2019-05-10 21:03:06

代码语言:javascript
复制
data want;
   set have;
   by group notsorted;
   difference=dif(date);
   if first.group then difference=.;
run;
票数 0
EN

Stack Overflow用户

发布于 2019-05-10 22:32:59

您可以使用几个函数来获得所需的结果。正如在另一个答案中提到的,您可以使用dif函数,该函数将返回dataset中的current_obs-previous_obs。或者,您可以使用retain语句。

代码语言:javascript
复制
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=的最后一个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56077498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档