SAS学习(8)——自定义proc means的数据导出

【分享一个有用的教程】

利用proc means计算均值、标准差、中位数等统计量的时候,一般结果都会直接显示在Results Reviewer上,如果想使用output out=语句将结果输出成数据集的话就会发现仅仅会输出N MIN MAX MEAN STD这5个基础变量,如下所示:

proc means data=sas1 n nmiss mean std median q1 q3 min max noprint;
var age dm_height dm_weight dm_surface dm_bmi_new;
output out=new1;
run;

不管在proc means语句后写多少统计量,output输出的new1数据集只有下面5个:

那么如果想将自己需要的所有描述统计的统计量都输出成新的数据集要怎么操作呢?

SAS 中有一个教程可以解决以上问题 :

Customizing output from PROC MEANS | SAS UsersThis blog post will give you step-by-step instructions for customizing the output data set created using the OUTPUT statement.https://blogs.sas.com/content/sgf/2015/07/17/customizing-output-from-proc-means/其代码主要如下:

proc means data=dm_group_1 n nmiss mean std median q1 q3 min max noprint;
var age dm_height dm_weight dm_surface dm_bmi_new;
output out=new1(drop=_type_ _freq_) 
n= nmiss= mean= std= median= q1= q3= min= max= / autoname;
/*较第一个代码多了上述一行*/
run;

在输出新的new1后打开数据集就会发现,数据是以宽数据集的形式展示,不利于后续的数据整理与展示:

上述教程也提供了如何利用proc transpose改变数据的格式,实操可行。

另外,除了教程提到的stackodsoutput选项的使用(更为简洁),如果使用计算不同组别的描述统计量还可以在原始的单组中补充下列标红代码(因为我在分析的时候没有注意到stackodsoutput选项的用法,琢磨了一阵子试出来了这个笨办法):

proc means data=dm_group_1 n nmiss mean std median q1 q3 min max noprint;
var age dm_height dm_weight dm_surface dm_bmi_new;
output out=new2(drop=_type_ _freq_)

n= nmiss= mean= std= median= q1= q3= min= max= / autoname;
by group_2cat; /*使用by语句计算分组统计量*/
run;

proc transpose data=new out=out;
by group_2cat; /*第一次转置时加入by,指定分组变量*/
run;

/*接下来按照教程中分离出变量名*/

proc transpose data=out1 out=out2(drop=_name_);
by varname group_2cat; /*第二次转置by后补充分组变量*/
id stat;
var col1;
run;
proc sort data=out2;

by group_2cat;
run;
/*利用分组变量重新排序*/

也可以得到想要的结果。

从这样:

变为这样:

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊小熊没有四点水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值