使用SAS按组计算日期之间的持续时间

Calculate duration between dates by group using SAS

我正在计算 child 被寄养的时间。但是,我遇到了一些问题。我的数据应该如下所示:

对于每个人 (ID),我需要计算持续时间 (end_date-start_date)。但是,我还需要应用一条规则,规定如果在同一类型的寄养中,结束日期和开始日期之间的时间少于 5 天,则应将其视为连续安置。如果在同一个人的相同类型的寄养中,结束日期与开始日期之间的间隔超过五天,则为新安置。如果是新型寄养,就是新安置。 duration这个变量是怎么算的,应该算的。

我尝试了以下代码,但它无法正常工作 + 我不知道如何应用我的 "five day"-规则。

Proc sort data=have out=want;
by id type descending start_date;
run;

Data want;
set want;
by id type;
retain last_date;
if first.id or first.type then do;
   last_date=end_date;
end;  
if last.id or last.type then duration=(end_date-start_date);
run;

非常感谢任何帮助!

在这里使用一堆保留语句来实现:

data want;
  set have;

  by id ;

  retain true_sd prev_ed prev_type;

  if first.id then call missing(prev_type);

  if type ~= prev_type then do;
     true_sd = sd;
     call missing(prev_ed);
     call missing(prev_type);
  end;

  if sd - prev_ed > 5 then true_sd = sd;

  duration = ed - true_sd;
  output;

  prev_type = type;
  prev_ed = ed;

  format sd ed true_sd prev_ed date.;


 run;

(这里假设type和id是数字。ed是end_date,sd是start_date)