楼主: 郭腾
1536 6

求助TTest的结果导入数据集失败 [推广有奖]

  • 10关注
  • 1粉丝

已卖:39份资源

博士生

46%

还不是VIP/贵宾

-

威望
0
论坛币
3277 个
通用积分
0.1500
学术水平
4 点
热心指数
8 点
信用等级
4 点
经验
5226 点
帖子
283
精华
0
在线时间
241 小时
注册时间
2012-11-8
最后登录
2018-6-6

楼主
郭腾 发表于 2014-1-15 15:20:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
% 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;
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;

二维码

扫码加我 拉你入群

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

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

关键词:ttest test 导入数据 Est 数据集 median title where 统计

沙发
郭腾 发表于 2014-1-15 15:21:15
请问我想把我所要的结果打印到一个文档中去,但是出来的结果不是我所想要的

藤椅
郭腾 发表于 2014-1-15 15:22:29
我自定义的表格并没有打印出来,单独的程序是可以的,编成宏就不行了,求大神指点迷津

板凳
邓贵大 发表于 2014-1-15 22:15:36
if no syntax error, 'file print notitle;' directs your output to the SAS listing file instead of the RTF file you wanted.
you'd better replace your DATA _NULL_ step with PROC REPORT or follow the instructions of Cynthia
http://www2.sas.com/proceedings/sugi30/088-30.pdf
Be still, my soul: the hour is hastening on
When we shall be forever with the Lord.
When disappointment, grief and fear are gone,
Sorrow forgot, love's purest joys restored.

报纸
jingju11 发表于 2014-1-16 01:44:01
非常同意楼上的观点.还有一点也要注意.
除了cards/datalines,每个数据步或者是过程都应该(或者最好)用RUN(QUIT)来结束.否则,有时侯结果不可预料.比如在这里就是一个典型的例子: 因为没有结束上一个过程(PROC UNIVARIATE),ODS OUTPUT自然从PROC UNIVARIATE里寻找对象而导致失败(因为PROC UNIVARIATE里不存在TTESTS表格).在这里SAS报错还是好的.比如你用了连续两个PROC TTEST.结果恐怕就混淆了,你却毫无意识.
京剧

地板
郭腾 发表于 2014-1-16 09:27:48
邓贵大 发表于 2014-1-15 22:15
if no syntax error, 'file print notitle;' directs your output to the SAS listing file instead of the ...
Your answer is very helpful for me,Thanks very much for you replying,I will learn the pdf carefully.

7
郭腾 发表于 2014-1-16 09:29:14
jingju11 发表于 2014-1-16 01:44
非常同意楼上的观点.还有一点也要注意.
除了cards/datalines,每个数据步或者是过程都应该(或者最好)用RUN( ...
谢谢您的建议,让我对SAS认识更加的深入了,谢谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-18 01:18