There are several ways to include time-dependent variables in a call to SAS’ Proc PHREG: Programming statements within PHREG or data steps combined with PHREG counting process format, i.e. in the model statement we use the syntax
model (t_in,t_out)*censored(0) = X1 … Xn;
instead of
model t*censored(0) = X1 … Xn;
Click the title to download the following SAS macro I have written. If you find an error please report it, otherwise you are free to use it. Another macro that can be used for the purpose of splitting a data set according to time-dependent variables is the Lexis macro developed by Bendix Carstensen %LEXIS
/*Macro for splitting data according to 0-1 time dependent variables*/
%macro split_time( filein, /*Data set file containing td_date among other variables*/ id, /*Patient id – needed since we sort wrt. id and datein – could be removed */ td_var, /*Created 0-1 time-dependent variable*/ td_date, /*Date for update of timedependent variable*/ datein, /*Entry date*/ dateout, /*Exit date*/ cenvar, /*Censored 0 yes 1 no*/ fileout, /*Output file*/ labeltext /*td_var label – plain text – no quotes!*/ );
proc sort data=&filein out=temp; by id &datein; run;
data temp1; set temp; if (&dateout GT &td_date) then do; &td_var=1; &datein=max(&td_date,&datein); end; else delete; run;
data temp3; set temp; if (&dateout LE &td_date) then &td_var=0; else delete; run;
data temp2; set temp; if (&dateout GT &td_date GT &datein) then do; &dateout=&td_date; &cenvar=0; &td_var=0; end; else delete; run;
data temp; set temp1 temp2 temp3; label &td_var=”&labeltext”; run;
proc sort data=temp out=&fileout; by &id &datein; run;
%mend split_time;
/*Example of its use – three dates included on the input file are used*/ %inc ‘Z:\split_time.sas’;
proc sort data=lv.litval; by id dateDep dateCon datePsy; run;
%split_time( lv.litval, id, conDep, dateDep, dateFirstPurchase, eventTimeHosp, censoredHosp, outDataDep, Concomitant use of antidepressants );
%split_time( outDataDep, id, conCon, dateCon, dateFirstPurchase, eventTimeHosp, censoredHosp, outDataCon, Concomitant use of anticonvulsants );
%split_time( outDataCon, id, conPsy, datePsy, dateFirstPurchase, eventTimeHosp, censoredHosp, lv.litvalHosp, Concomitant use of antipsychotics );
Comments