全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1354 2
2014-09-16
程序:
DATA anova1;  
      INPUT z x @@;
   CARDS;
1 128.1 1 134.1 1 133.1 1 138.9 1 140.8 1 127.4
2 150.3 2 147.9 2 136.8 2 126.0 2 150.7 2 155.8

;
run;
proc sort;by z;
proc print data=anova1; run;
PROC univariate normal;
          var x;
          by z;
run;
proc anova;
class z;
model x=z;
means z/duncan hovtest=bartlett;
run;
%macro jiliang (database,var,index);
/*将univariate normal过程步的描述性统计结果和正态性检验的结果输出到到result数据集中*/
proc univariate normal noprint data=&database;
var  &var;  by group;
output out=result  n=n mean=mean median=med std=std min=min max=max nmiss=nmiss  PROBN=Pnor;
/*将A、B两组描述性统计和正态性检验的结果分别输出到a,b两个独立的数据集中,并定义变量的长度*/
data a(where=(group="A"))b(where=(group="B"));
set result;
format mean 6.2 med 6.2 std 6.2  Pnor 18.2;
/*将a,b两个独立的数据集,根据不同的组别将结果重新命名,合并为一个result数据集中*/
data result(drop=group);/**/
merge a(rename=(n=NA nmiss=MA mean=MeanA med=medA std=StdA  Min=MinA Max=MaxA Pnor=PnorA))
b(rename=(n=NB nmiss=MB mean=MeanB med=medB std=StdB  Min=MinB Max=MaxB Pnor=PnorB));
Variable="&var";
/*利用ODS输出t检验结果数据集Ttests和正态性检验结果数据集Equality */
ods listing close;
ods output  TTests=TTests  Equality=Equality ;
proc ttest data=&database;
var &var;class group;
run;
ods listing;
/*合并数据集Ttests、Equality和result到一个数据集中test1*/
data test;
merge   Equality TTests result;
by Variable;
/*生成正态且方差齐性的成组T检验的数据集,并定义变量格式*/
data test1;
set test;
where PnorA>0.05 and PnorB>0.05 and ProbF>0.05 and Variances="Equal";
length stat $ 15;
stat="t_value";
/*生成正态但方差不齐的成组T检验的数据集,并定义变量格式*/
data test2;
set test1;
where  ProbF<0.05 and Variances="Unequal";
length stat $ 15;
stat=" t' ";
/*合并成组T检验的数据集,并定义变量的长度*/
data test(keep=tValue Probt stat);
merge test1 test2;
tValue=abs(tValue);
format tValue 6.2 Probt 6.3;
put #1 @3 "&index"
#2 @5 "例数(缺失)" @22 NA'(' MA')' @42 NB'(' MB')'
@60 stat '=' tValue @80 'P=' Probt
#3 @5 "均数±标准差" @22 MeanA'±' StdA @42 MeanB'±' StdB
#4 @5 "中位数" @22 MedA @42 MedB
#5 @5 "最大值" @22 MaxA @42 MaxB
#6 @5 "最小值" @22 MinA @42 MinB;
end;
%mend jiliang;
%jiliang (anova1,z,tizhong);





我想要这种格式的结果:

心率

    例数(缺失)     103 (0 )            106 (0 )          t_value =0.23       P=0.816

    均数±标准差     79.64 ±11.25       80.01 ±11.65

    中位数           80.00               80.00

    最大值           120                 110


    最小值           53                  50


二维码

扫码加我 拉你入群

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

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

全部回复
2014-9-18 00:07:48
建议写code,每个step 都加一个run , 每个分号一行, 两段code 之间空一行,不然好难看。

复制代码
二维码

扫码加我 拉你入群

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

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

2014-9-18 13:15:55
苹果叶 发表于 2014-9-18 00:07
建议写code,每个step 都加一个run , 每个分号一行, 两段code 之间空一行,不然好难看。
谢谢谢谢,你好厉害啊
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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