|
data j;
input name $3. age :2. sex :$2. id :6. d :anydtdte9. e :anydtdte9. o :anydtdte9. t 20.;
cards;
SFJ 40 女 277270 2010-12-24 2010-12-24 2011-1-28 136719.83
SFJ 41 女 277270 2011-2-28 2011-2-28 2011-4-3 95801.55
SFJ 41 女 277270 2011-5-23 2011-5-23 2011-6-11 54787.56
SFJ 41 女 277270 2011-10-6 2011-10-6 2011-10-25 63104.4
LHS 56 女 280785 2011-3-1 2011-3-1 2011-4-4 83876.28
LHS 56 女 280785 2011-6-24 2011-6-24 2011-7-20 57131.43
WGS 58 女 291083 2011-7-19 2011-7-19 2011-8-26 169990.75
WGS 58 女 291083 2011-10-6 2011-10-6 2011-11-15 190025.72
LHM 55 女 260754 2010-4-1 2010-4-1 2010-4-23 62973.59
;
run;
proc sort data=j;by id e;run;
data b;
set j;
by id e;
if first.id then do;Fin_diagdat=e;diaage=age;end;
if Fin_diagdat^=.;
keep name id sex diaage Fin_diagdat;
run;
data c;
set j;
by id e;
j=lag(t);
retain Numhos totcost ;
if first.id then Numhos=1;else Numhos+1;
if first.id then totcost=t;else totcost=t+j;
if last.id then Losdat=o;
if last.id;
keep name id Numhos totcost Losdat;
run;
proc sort data=b;by id;run;
proc sort data=c;by id;run;
data aa;
merge b c;
Survday=Losdat-Fin_diagdat;
avecost=totcost/Numhos;
Losdat1=put(Losdat,ddmmyy10.);
Fin_diagdat1=put(Fin_diagdat,ddmmyy10.);
drop Losdat Fin_diagdat;
rename Fin_diagdat1=Fin_diagdat Losdat1=Losdat;
run;
|