求大神帮忙给看看,为什么我打印出了univariate过程中的所有结果,我只想打印最后那个表格呀,这是程序,运行结果见附件
%macro pairTest(title=, infile=, var1=, var2=);
data dif;
set &infile.(keep=&var1. &var2.);
var_new=&var1-&var2;
run;
data dm;
set &infile.(keep=&var1. rename=(&var1.=var_cb) in=ina) &infile.(keep=&var2. rename=(&var2.=var_cb));
if ina then group=1 ;else group=2;
run;
proc univariate data=dm;/*描述统计*/
var var_cb;
by group;
output out=dscrp n=n nmiss=nmiss mean=mean std=std median=med q1=q1 q3=q3 min=min max=max ;
run;
data one(where=(group=1)) two(where=(group=2));
set dscrp;
run;
data dhp;
merge one(rename=(n=NA nmiss=MA mean=MeanA med=medA std=stdA Q1=Q1A Q3=Q3A Min=MinA max=MaxA ))
two(rename=(n=NB nmiss=MB mean=MeanB med=medB std=stdB Q1=Q1B Q3=Q3B Min=MinB max=MaxB ));
run;
proc univariate normal data=dif;/*正态性检验*/
var var_new;
output out=N_test n=n nmiss=nmiss normal=z probn=probn ;
run;
proc ttest data=dif;/*配对T检验*/
ods output TTests=TTests;
paired &var1.*&var2.;
run;
data result;
merge N_test dhp ttests;
format z 6.2 probn 6.4 tValue 6.2 probt 6.4 MeanA 6.2 stdA 6.4 MeanB 6.2 stdB 6.4;
run;
data _NULL_;/**/
set result;
file print notitle;
put
# 1 @30 "&title."
# 2 @3 "访视" @23 "服药前" @46"服药后"
# 3 @3 "正态性检验 " @22 "Z=" z @45"P=" probn
# 4 @3 "配对T检验" @22 "T=" tValue @45 "P=" Probt
# 5 @3 "例数(缺失)" @22 NA '(' MA ')' @45 NB '(' MB ')'
# 6 @3 "均数(标准差)" @22 MeanA '(' stdA ')' @45 MeanB '(' StdB ')'
# 7 @3 "中位数(P25~P75)" @22 MedA '(' Q1A '-' Q3A ')' @45 MedB '(' Q1B '-' Q3B ')'
# 8 @3 "最小值-最大值" @22 MinA '-' MaxA @45 MinB '-' MaxB;
run;
proc datasets; delete result dif dm one two dscrp dhp ttests N_test; quit;
%mend;
/*血液检查 访视2和访视3比较*/
ods listing close;
ods rtf file="E:\bc-biostat\ed\sasfile\服药前后血液检查差异性比较结果.rtf";
%pairTest(title=血细胞, infile=ed.sas_db, var1= rbc0,var2=rbc1);
%pairTest(title=血红蛋白,infile=ed.sas_db, var1=hgb0,var2=hgb1);
%pairTest(title=血细胞, infile=ed.sas_db, var1=rbc0,var2=rbc1);
%pairTest(title=白细胞, infile=ed.sas_db, var1=wbc0,var2=wbc1);
%pairTest(title=血小板, infile=ed.sas_db, var1=plt0,var2=plt1);
ods rtf close;
ods listing;