|
|
to fxf258
谢谢fxf258的鼓励,经过一段时间的摸索,可以得出表格形式的结果,但仍有不尽如人意的地方(不能生成多个变量在一起的大表格),现将程序列出,诚心向各位高手请教,以便共同提高。
[code:2b1dd]%macro clianova(data,group=,var=,prnopt=0,where=);
%if &prnopt=0 %then %do;ods select none;%end;
options nodate nonumber;title '';
proc means n mean std median min max lclm uclm nmiss noprint data=&data;var &var;class &group;
%if &where ne %then %do; where &where; %end;
output out=tmp1 n=n mean=mean median=median std=std min=min max=max nmiss=nmiss q1=q1 q3=q3;
run;
proc glm data=&data;class &group;model &var=&group;
ods output diff=tmpf;
lsmeans &group/tdiff pdiff;run;
data t12(keep=t12 p12);set tmpf;if _n_=1;rename _2=t12 p2=p12;run;
data t13(keep=t13 p13);set tmpf;if _n_=1;rename _3=t13 p3=p13;run;
data t23(keep=t23 p23);set tmpf;if _n_=2;rename _3=t23 p3=p23;run;
data t12;set t12 t12 t12 t12 t12;run;
data t13;set t13 t13 t13 t13 t13;run;
data t23;set t23 t23 t23 t23 t23;run;
data tmp;merge t12 t13 t23;format t12 t13 t23 6.2 p12 p13 p23 6.3;run;
data tmp2;set tmp1;
nnm=put(n,6.) ||'('||trim(left(put(nmiss,6.)))||')';
ms=put(mean,6.1) ||'±'||left(put(std,6.1));
lu=put(lclm,6.1) ||'~'||left(put(uclm,6.1));
mm=put(min,6.1) ||'~'||left(put(max,6.1));
format median 6.1;
label nnm='N(Miss)' ms='Mean±SD' lu='95%CI(L~U)' mm='Min~Max' median='Median';
drop mean std min max n nmiss lclm uclm;run;
proc anova data=&data;ods output modelANOVA=anova(rename=(fvalue=F probf=P));class &group;model &var=&group;
%if &where ne %then %do; where &where; %end;run;
proc transpose data=tmp2 out=tmp3;var nnm ms q13 mm median;run;
data tmp3(drop=_name_ col1 F t12 p12 t13 p13 t23 p23);merge tmp3 anova(keep=F P) tmp;
format f 6.2 p 6.3;rename _label_=&var col2=A col3=B col4=C;
if _n_=2 then do;F=t12;P=p12;end;if _n_=3 then do;F=t13;P=p13;end;
if _n_=4 then do;F=t23;P=p23;end;run;
ods select all;ods listing;proc print data=tmp3 noobs;run;
%mend clianova;
ods listing close;ods rtf file='d:\tmp\tmp.rtf' style=sasdocprinter startpage=no;
%clianova(data=tmp,var=age,group=group,where=sex=1);
ods rtf close;ods listing;[/code:2b1dd] |
|