全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4688 3
2013-04-24
拜见各位大神有个问题想请教:我借用了网上关于t检验的宏。
在输出的时候
“结果”里面有我要put的内容以及检验的值,如图
但是在输出里面就只有put的内容。
我之前一直是把输出的内容另存为 rtf 然后再转成word,

但是我想ods rtf 过程直接输出word的话
输出的内容就把输出的内容检验的内容都输出来了。

怎么样才可以直接把输出的内容转成word,并且不会把检验的内容显示在word?也就是说只输出图中print的部分,不输出wilcox的部分
非常感谢各位帮助!

参考的程序如下:
%macro ttest(database=,var=, index=);
proc sort data=&data.;
by group;
run;

proc univariate noprint data=&database.;
var &var.;
by group;
output out=result n=n mean=mean median=med std=std min=min max=max nmiss=nmiss
Q1=Q1 Q3=Q3;
run;
* 将描述性结果输出到result数据集中;

data a(where=(group="A")) b(where=(group="B"));
set result;
format mean 6.2 med 6.2 std 6.2;
run;
* 将两组的描述性结果分别输出到独立的数据集a、b中,并定义mean、med、std的长度;

data result(drop=group);
merge a(rename=(n=NA nmiss=MA mean=MeanA med=medA std=stdA Q1=QA1 Q3=QA3
min=minA max=maxA))
b(rename=(n=NB nmiss=MB mean=MeanB med=medB std=stdB Q1=QB1 Q3=QB3
min=minB max=maxB));
run;
* a、b分别重新对变量更名,再合并到一个数据集中;

ods listing close;
ods output ttests=ttests equality=equality;
proc ttest data=&database.;
var &var.;
class group;
run;
ods listing;
* 利用ODS将成组t检验结果输出到数据集ttests,方差齐性检验结果输出到数据集equality;

data test2;
merge ttests equality;
by variable;
* 合并数据集ttests、equality到数据集test2中;

data test21;
set test2;
where ProbF>0.05 and Variances="Equal";
length stat $5;
stat="t";
run;
* 生成方差齐性的成组t检验数据集test21,并定义变量格式;

data test22;
set test2;
where ProbF<0.05 and Variances="Unequal";
length stat $5;
stat="校正t";
run;
* 生成方差非齐性的成组t检验数据集test22,并定义变量格式;

data test(keep=tValue Probt stat);
merge test21 test22;
tValue=abs(tValue);
format tValue 6.2 Probt 6.4;
run;
* 合并成组t检验数据集test21、test22,并定义变量长度;

data _null_;
merge result test;
file "C:\1.txt" mod;
put
#1 @3 "&index."  @70 stat '=' tValue  @85 'P=' Probt
#2 @5 "例数(缺失)" @22 NA '(' MA ')' @47 NB '(' MB ')'
#3 @5 "均数(标准差)"  @22 MeanA '(' StdA ')' @47 MeanB '(' StdB ')'
#4 @5 "中位数(P25~P75)" @22 MedA '(' QA1 '-' QA3 ')' @47 MedB '(' QB1 '-' QB3 ')'
#5 @5 "最小值-最大值" @22 MinA '-' MaxA  @47  MinB  '-' MaxB;
run;
* 表格基本框架构建;

data _null_;
merge result test;
file "C:\结论.txt" mod;

if Probt>0.05 then do ;
put @1 '两组间' "&index." '比较无统计学意义(P>0.05)' ;
end;

else do ;
put @1 '两组间' "&index." '比较有统计学意义(P<0.05)' ;
end ;
;
run;

proc datasets;
delete result a b TTests Equality test2 test21 test22 test stt;
quit;
* 删除临时数据集;

%mend ttest;


%macro ctit(tit);
data _null_;
file "C:\1.txt" mod;
put
#1 @3 "&tit"
#2 @2 90*'_'
#3 @3 '指标项' @22 'A组' @47 'B组' @72 '统计量' @87 'P值'
#4 @2 90*'_';
run;
%mend ctit;
* 定义表格的表头和表格线;

%macro ctit0(tit);
data _null_;
file "C:\结论.txt" mod;
put
#2 @1 "&tit"
;
run;
%mend ctit;


%macro cleg;
data _null_;
file "C:\1.txt" mod;
put #1 @2 90*'_';
run;
%mend cleg;
* 定义表格线;

/*

data a1;
input group$ tiwen xinlv @@;
cards;
A 75.2  75.1  A 76.4 80  A 80  65  A 77  82  A 80  95  
A 77.1  82.2  A 73  .  
B 82.2  66.9  B 80.1  74.9  B 85  70  B 85 74  B 78  99
B 87.3  80.8  B 82.2  60
;
run;
%ctit0(两组基线数据比较)
%ctit (两组基线数据比较)
%ttest(database=work.a1,var=tiwen, index=体温)
%ttest(database=work.a1,var=xinlv, index=心率)
%cleg

*/

转贴自EPIman






附件列表
未命名.jpg

原图尺寸 17.87 KB

未命名.jpg

二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-24 15:36:04
自己先顶,求大神回复
二维码

扫码加我 拉你入群

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

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

2013-4-24 15:38:50
请您帮我看一下
二维码

扫码加我 拉你入群

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

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

2017-5-5 09:23:39
稍微多一点内容,你删除一些就好了啊
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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