全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1688 3
2014-01-16
求大神帮忙给看看,为什么我打印出了univariate过程中的所有结果,我只想打印最后那个表格呀,这是程序,运行结果见附件
服药前后血液检查差异性比较结果.rar
大小:(28.08 KB)

 马上下载

本附件包括:

  • 服药前后血液检查差异性比较结果.rtf


%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;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-1-16 16:57:27
欢迎大神前来答疑解惑,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-16 17:17:38
两个地方,一个proc univariate data=dm;/*描述统计*/加noprint选项;
第二个ods output TTests=TTests;
     paired &var1.*&var2.;
改成ods select none;
proc ttest data=dif;/*配对T检验*/
ods output TTests=TTests;
     paired &var1.*&var2.;
run;
ods select all;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-17 08:29:42
牵你↗左手 发表于 2014-1-16 17:17
两个地方,一个proc univariate data=dm;/*描述统计*/加noprint选项;
第二个ods output TTests=TTests;
...
谢谢您的回复,谢谢,对我很有帮助
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群