Date 显示第二天在SAS中执行的选定观察
如果变量ID、日期、过程的数据集如下所示:Date 显示第二天在SAS中执行的选定观察,date,sas,dataset,selection,Date,Sas,Dataset,Selection,如果变量ID、日期、过程的数据集如下所示: '12 01jan2013 a' '12 01feb2013 b' '13 14feb2013 c' '13 15feb2013 a' '24 01mar2013 c' '24 02mar2013 a' '26 01oct2013 a' '26 02oct2013 a' 我只想输出那些观察结果,其中过程为a,并且在过程为c之后的第二天对每个ID(按ID)执行。因此,从上述示例中,我将得出以下结论: '13 15feb2013 a' '
'12 01jan2013 a'
'12 01feb2013 b'
'13 14feb2013 c'
'13 15feb2013 a'
'24 01mar2013 c'
'24 02mar2013 a'
'26 01oct2013 a'
'26 02oct2013 a'
我只想输出那些观察结果,其中过程为a,并且在过程为c之后的第二天对每个ID(按ID)执行。因此,从上述示例中,我将得出以下结论:
'13 15feb2013 a'
'24 02mar2013 a'
你能帮我为这次行动提供一个SAS代码吗?是的,你做得对<代码>保留是一种方法。然后,您可以将条件语句的日期转换为SAS日期值(即1960年1月1日之后的天数)
data test(drop=retaindate rid);
infile datalines truncover;
input ID date date9. Procedure $;
if Procedure = 'c' then do;
retaindate = date;
rid = id;
retain retaindate rid;
end;
if Procedure='a' and rid=id and date=retaindate+1 then do;
output;
end;
format date date9.;
datalines;
12 01jan2013 a
12 01feb2013 b
13 14feb2013 c
13 15feb2013 a
24 01mar2013 c
24 02mar2013 a
26 01oct2013 a
26 02oct2013 a
;
run;
您好,到目前为止您尝试了什么?我正在按ID使用“retain”和“New_date=date+1”以及“if-then-do”语句。但是我不知道如何使过程变量具体化。输出的obs必须与昨天的过程=
c
具有相同的ID吗?我使用了您提到的retain语句,还使用了SAS日期值,而不是下面代码中示例数据集中的日期格式。是的,ID必须相同。我正在尝试查看ID是否在对该ID执行PRODURE=c后的第二天执行了PRODURE=a。在您进一步说明所需条件后,我还保留了ID,从而稍微修改了代码。干杯。这将在不同的ID之间溢出-只需要一点first.ID逻辑来处理。是的,你说得对,我在日志中没有看到。我稍微调整了一下。谢谢你通知我。