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;
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 ;
data one(where=(group=1)) two(where=(group=2));
set dscrp;
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 ));
proc univariate normal data=dif;/*正态性检验*/
var var_new;
output out=N_test n=n nmiss=nmiss normal=z probn=probn ;
ods listing close;
ods output TTests=ttests;
proc ttest data=dif;/*配对T检验*/
paired &var1.*&var2.;
ods listing;
data result;
merge N_test dhp ttests;
format normal 6.2 probn 6.4 tValue 6.2 probt 6.4 MeanA 6.2 stdA 6.4 MeanB 6.2 stdB 6.4;
data _NULL_;/**/
set result;
file print notitle;
put
# 1 @30 "&title"
# 2 @3 "访视"
# 3 @3 "正态性检验 " @25 "Z=" z @48"P=" probn
# 4 @3 "配对T检验" @25 "T=" tValue @48 "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;
%mend;
ods rtf file="E:\BC-BIOSTAT\ed\sasfile\服药前后血液检查差异性比较结果.rtf";
%pairTest(血红蛋白,ed.sas_db, hgb0,hgb1);
%pairTest(血细胞, ed.sas_db, rbc0,rbc1);
%pairTest(白细胞, ed.sas_db, wbc0,wbc1);
%pairTest(血小板, ed.sas_db, plt0,plt1);
ods rtf close;
ods listing;



雷达卡




京公网安备 11010802022788号







