OPTIONS LINESIZE=140 PAGESIZE=100 NOCENTER NODATE NONUMBER NOFMTERR; *******************************************************************; * WATCH II Study PROGRAM ; * PROGRAM NAME LOCATION DATE PROGRAMMER ; Title1 "Source:w2ed04p37.SAS WATCH II 5/20/2004 EJS " ; * saved for documentation as w2anal4-prg.txt ; * Description: Two Group ANOVA models ; * with control and intervention group- tables with no effect ; * modifiers ; * Example for Documentation ; * The table title is saved in the following location: ; FILENAME tout "C:\temp\test.txt" ; *******************************************************************; ODS HTML CLOSE; ODS Listing ; DATA d1; INPUT interv id resp; LABEL resp ="Response: RESP" interv="Intervention*occurred:INTERV" id="ID"; CARDS; 0 7 156 0 11 193 0 12 189 0 17 279 0 44 179 0 55 163 1 8 185 1 10 162 1 14 238 1 83 199 1 89 191 1 90 251 ; PROC PRINT DATA=d1 NOOBS LABEL; VAR interv id resp; TITLE2 "Test Data"; RUN; *****************************************************************; *** Macro to conduct analyses and produce results *; *****************************************************************; %MACRO w2anal4 (datain,group,outfile,vname); * Note: Variable INTERV: coded as 0=control 1=intervention; DATA d1; SET &datain; PROC SORT DATA=d1; BY interv; PROC MEANS NOPRINT DATA=d1; BY interv; VAR &vname; OUTPUT OUT=nsub n=n; PROC TRANSPOSE DATA=nsub OUT=nsub1 PREFIX=n; VAR n; PROC MIXED DATA=d1; CLASS interv ; MODEL &vname=interv /solution; LSMEANS interv; ODS OUTPUT SOLUTIONF=est; ODS OUTPUT LSMEANS=lsm; TITLE2 "Table 1. Overall two-group analysis"; RUN; **********************************************; **** Summarize parameter estimates *; **********************************************; DATA lsm1 (RENAME=(estimate=cont_m stderr=cont_se)) lsm2 (RENAME=(estimate=trt_m stderr=trt_se)); SET lsm; IF _N_=1 THEN OUTPUT lsm1; IF _N_=2 THEN OUTPUT lsm2; ************************************************; *** Summarize estimate of difference and p-value; ************************************************; DATA est1 (KEEP=estimate stderr probt); SET est; IF _N_=2; RUN; DATA lsm3 (KEEP=n1 cont_m cont_se n2 trt_m trt_se diff_m diff_se probt); MERGE LSM1 LSM2 est1 nsub1; diff_m=estimate; diff_se=stderr; RUN; DATA _NULL_; SET lsm3; FILE &outfile MOD; PUT @1 "&group" @12 n1 3. @17 cont_m 5.1 @23 "(" @24 cont_se 4.2 ")" @31 n2 3. @36 trt_m 5.1 @42 "(" @43 trt_se 4.2 ")" @55 diff_m 5.1 @62 "(" @63 diff_se 4.2 ")"/ @58 "(" @59 probt 6.4 ")" //; %MEND; %w2anal4 (datain=d1,group=Test,outfile=tout,vname=resp); RUN;