|
根据别人写的改的,大家点评一下,合理吗?
proc sort data=test.demo out=demo;
by id descending stdt descending endt;
run;
data aa;
set demo;
by id descending stdt descending endt;
type_1=lag1(type); stdt_1=lag1(stdt); endt_1=lag1(endt);
type_2=lag2(type); stdt_2=lag2(stdt); endt_2=lag2(endt);
type_3=lag3(type); stdt_3=lag3(stdt); endt_3=lag3(endt);
type_4=lag4(type); stdt_4=lag4(stdt); endt_4=lag4(endt);
type_5=lag5(type); stdt_5=lag5(stdt); endt_5=lag5(endt);
if first.id then do;
type_1=''; type_2='';type_3='';type_4='';type_5='';
stdt_1=.; stdt_2=.; stdt_3=.; stdt_4=.; stdt_5=.;
endt_1=.; endt_2=.; endt_3=.; endt_4=.; endt_5=.;
end;
if type='Vomiting' then flag='yes';
if type='Retching' then do;
if endt-stdt>=5*60 then flag='yes';
if type_1='Vomiting' and stdt-endt_1<=1*60 then flag='yes';
if type_1='Retching' and endt_1-stdt<=1*60 then do; if type_2='Vomiting' and endt-stdt_1>=5*60 then flag='yes';
else if type_2='Retching' and endt_2-stdt_1<=1*60 then do;
if type_3='Vomiting' and endt-stdt_2>=5*60 then flag='yes';
else if type_3='Retching' and endt_3-stdt_2<=1*60 then do;
if type_4='Vomiting' and endt-stdt_3>=5*60 then flag='yes';
else if type_4='Retching' and endt_4-stdt_3<=1*60 then do;
if type_5='Vomiting' and endt-stdt_4>=5*60 then flag='yes';
else if type_5='Retching' and endt_5-stdt_4<=1*60 then flag='yes';
end;
end;
end;
end;
end;
run;
|