9520 9521 dm "log; clear;output;clear"; 9522 option nonotes; 9523 resetline; 1 proc format; 2 picture mypvalue (round) 3 0<-<0.000095 = '9' (prefix='<0.0001') 4 0.000095-<0.00095 = '9.9999' 5 0.00095-<0.0095 = '9.999' 6 0.0095-1 = '9.99' 7 . = ' '; 8 run; 9 /****************************************************************************/ 10 * Table 1: Basic Characteristics; 11 * Table 1: Ordinal variables; 12 %macro t1_p1(vlst=sex race1 arm ps12_t1 n2_t1 t3_t1 grade34_t1 perf_yn obstruct_yn smoke_yn asp1 mv1 wst1_Q2 prd1_Q2 12 ! gl1_Q2); 13 %let i=1; 14 %do %while (%scan(&vlst, &i) ^=%str()); 15 %let var=%scan(&vlst, &i); 16 title "T1: &var."; 17 proc freq data=all_90; table &var. * lowbev12_5grp /nopercent norow chisq; run; 18 title; 19 %let i=%eval(&i+1); 20 %end; 21 %mend; 22 %t1_p1(); 23 * Table 1: Continuous variables; 24 %macro t1_p2(vlst=lowbev12 age lowbev12 bmi1 totalmets1 calor1 coff1 caff1 alco1 sugbev1 water1); 25 %let i=1; 26 %do %while (%scan(&vlst, &i) ^=%str()); 27 %let var=%scan(&vlst, &i); 28 title "T1: &var."; 29 proc means data=all_90 n median q1 q3 maxdec=1; var &var.; class lowbev12_5grp; run; 30 proc NPAR1WAY data=all_90 wilcoxon; class lowbev12_5grp; var &var.; run; 31 title; 32 %let i=%eval(&i+1); 33 %end; 34 %mend; 35 %t1_p2(); 36 /****************************************************************************/ 37 * Table 2: HR Table; 38 %let m1_cont=; %let m1_class=; %let m1_tv=calor; 39 %let m2_cont=age; %let m2_class=sex arm n2 t3 ps12 asp12; %let m2_tv=calor totalmets bmi; 40 %let m3_cont=age; %let m3_class=sex arm n2 t3 ps12 asp12; %let m3_tv=calor totalmets bmi wst prd gl cerlfib coff 40 ! sugbev; 41 %let m4_cont=age; %let m4_class=sex arm n2 t3 ps12 asp12; %let m4_tv=calor totalmets bmi wst prd gl cerlfib caff 41 ! sugbev; 42 %let m5_cont=age; %let m5_class=sex arm n2 t3 ps12 asp12; %let m5_tv=calor totalmets bmi bev; 43 %macro t2(prim_exp=lowbev12_5grp); 44 %do i = 1 %to 3; 45 %let mdl=%scan(dfscens rfscens dead, &i,' '); 46 %let model_time=%scan(q1_dfs q1_rfs q1_os, &i,' '); 47 %do mi = 1 %to 5; 48 title "T2: &mdl., cov: m&mi"; 49 proc phreg data=all_90; 50 class &prim_exp(ref="1") &&m&mi._class; 51 model &model_time. * &mdl.(0) = &prim_exp &&m&mi._class &&m&mi._cont &&m&mi._tv/ties=EFRON rl; 52 %let tvi=1; 53 %do %while (%scan(&&m&mi._tv, &tvi) ^=%str()); 54 %let tv_var=%scan(&&m&mi._tv, &tvi); 55 &tv_var=&tv_var.1; 56 %let tvi=%eval(&tvi+1); 57 %end; 58 %if (zs_tvq2=1 and &model_time.>=time1) %then %do; 59 %let tvi=1; 60 %do %while (%scan(&&m&mi._tv, &tvi) ^=%str()); 61 %let tv_var=%scan(&&m&mi._tv, &tvi); 62 &tv_var=&tv_var.2; 63 %let tvi=%eval(&tvi+1); 64 %end; 65 %end; 66 run; 67 proc phreg data=all_90; 68 class &&m&mi._class; 69 model &model_time. * &mdl.(0) = &prim_exp._med &&m&mi._class &&m&mi._cont &&m&mi._tv/ties=EFRON rl; 70 %let tvi=1; 71 %do %while (%scan(&&m&mi._tv, &tvi) ^=%str()); 72 %let tv_var=%scan(&&m&mi._tv, &tvi); 73 &tv_var=&tv_var.1; 74 %let tvi=%eval(&tvi+1); 75 %end; 76 %if (zs_tvq2=1 and &model_time.>=time1) %then %do; 77 %let tvi=1; 78 %do %while (%scan(&&m&mi._tv, &tvi) ^=%str()); 79 %let tv_var=%scan(&&m&mi._tv, &tvi); 80 &tv_var=&tv_var.2; 81 %let tvi=%eval(&tvi+1); 82 %end; 83 %end; 84 run; 85 %end; 86 %end; 87 title; 88 %mend; 89 %t2(prim_exp=lowbev12_5grp); 90 %t2(prim_exp=lowbev12_4grp); 91 /****************************************************************************/ 92 * Table 3: Subgroup Analysis; 93 %macro t3(p09_ds=, yn_var=,adj_cont=, adj_class=,tv_vlst=); 94 title "T3: DFS OVER &yn_var"; 95 *COUNT check; 96 proc freq data=&p09_ds; 97 tables lowbev12_4grp lowbev12_4grp*&yn_var./nocol norow nopercent nocum; 98 where &yn_var.~=.; 99 run; 100 proc freq data=&p09_ds; 101 tables lowbev12_4grp lowbev12_4grp*&yn_var./nocol norow nopercent nocum; 102 where &yn_var.~=. & dfscens=1; 103 run; 104 *SUBGROUP HR; 105 proc phreg data = &p09_ds; 106 class lowbev12_4grp(ref="1") &yn_var &adj_class; 107 model q1_dfs90 * dfscens (0) = lowbev12_4grp|&yn_var &adj_class &adj_cont &tv_vlst; 108 %if (time1=. or q1_dfs90