Date 使用SAS按组计算日期之间的持续时间
我正在计算一个孩子被寄养多久。然而,我有一些问题。我的数据应该如下所示: 对于每个个体(ID),我需要计算持续时间(结束日期-开始日期)。但是,我还需要应用一条规则,规定如果在同一类型的寄养中,结束日期和开始日期之间的间隔少于5天,则应将其视为连续安置。如果在同一个人的同一类型寄养中,从结束日期到开始日期之间的间隔超过五天,则为新安置。如果这是一种新型的寄养,那就是一种新的安置方式。变量“持续时间”是如何计算的 我尝试了下面的代码,但它没有正确的工作方式+我不知道如何应用我的“五天”规则Date 使用SAS按组计算日期之间的持续时间,date,sas,retain,Date,Sas,Retain,我正在计算一个孩子被寄养多久。然而,我有一些问题。我的数据应该如下所示: 对于每个个体(ID),我需要计算持续时间(结束日期-开始日期)。但是,我还需要应用一条规则,规定如果在同一类型的寄养中,结束日期和开始日期之间的间隔少于5天,则应将其视为连续安置。如果在同一个人的同一类型寄养中,从结束日期到开始日期之间的间隔超过五天,则为新安置。如果这是一种新型的寄养,那就是一种新的安置方式。变量“持续时间”是如何计算的 我尝试了下面的代码,但它没有正确的工作方式+我不知道如何应用我的“五天”规则 非常
非常感谢您的帮助 在这里使用一组retain语句来实现这一点:
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;
(假设此处的类型和id为数字。ed为结束日期,sd为开始日期)
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;