top of page

Time-dependent variables and SAS PHREG

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:\’;

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 );

0 views0 comments

Recent Posts

See All

dplyr or base R

dplyr and tidyverse are convenient frameworks for data management and technical analytic programming. With more than 25 years of R experience, I have a tendency to analyze programmatic problems before

bottom of page