楼主: shaxuan
12528 10

[原创博文] 求助 proc means 结果输出格式 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

25%

还不是VIP/贵宾

-

威望
0
论坛币
500 个
通用积分
6.0000
学术水平
5 点
热心指数
6 点
信用等级
5 点
经验
241 点
帖子
89
精华
0
在线时间
121 小时
注册时间
2007-9-15
最后登录
2023-9-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
麻烦高手帮忙指教一下!

我的SAS程序是:

proc means data=a n sum mean stddev clm maxdec=1;
var b01-b42;
class c;
run;

结果显示是
cN ObsVariableNSumMeanStd DevLower 95%Upper 95%
CL for MeanCL for Mean
0500b01249639625.780.215.735.7
b022494541.821.3-0.84.5
b0324922589.145.73.414.8


我希望结果显示的格式是如下的个格式,希望高手指点一下!!!!万分感谢!!!!


-
(N=     500)(N=     255)
b01N500255
Sum640911499
Mean (SD)25.7 (80.22)45.1 (110.24)
95% Confidence Interval[15.7 ; 35.8][31.5 ; 58.7]
b02N500255
Sum4541338
Mean (SD)1.8 (21.26)5.2 (37.65)
95% Confidence Interval[-0.8 ; 4.5][0.6 ; 9.9]
b03N500255
Sum22582794
Mean (SD)9.1 (45.66)11.0 (55.23)
95% Confidence Interval[3.4 ; 14.8][4.1 ; 17.8]






二维码

扫码加我 拉你入群

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

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

关键词:means 输出格式 结果输出 mean ans 程序

回帖推荐

jingju11 发表于9楼  查看完整内容

%macro MeansMcr; proc sql; create table base(var char(10), _name char(20), F char(20), M char(20)); quit; %do i=1 %to 42; %if &i

本帖被以下文库推荐

沙发
hzjove 发表于 2009-8-12 23:02:47 |只看作者 |坛友微信交流群
转置一下就好拉

使用道具

藤椅
jingju11 发表于 2009-8-12 23:54:27 |只看作者 |坛友微信交流群
都不是数据,如何转置?如果你要想改变sas的缺省输出方式,那可不容易。

使用道具

板凳
shaxuan 发表于 2009-8-13 15:28:48 |只看作者 |坛友微信交流群
麻烦楼上说的明白些,我应该怎么做!!谢谢

使用道具

报纸
Biostatistician 发表于 2009-8-13 16:41:16 |只看作者 |坛友微信交流群
如果你能导入到excel中,那么很容易转置的

使用道具

地板
shaxuan 发表于 2009-8-13 19:15:51 |只看作者 |坛友微信交流群
谢谢楼上,我导入excel了,用了很笨很笨的方法。 请问excel什么样的函数能帮助我得到上面的结果。

使用道具

7
jingju11 发表于 2009-8-13 20:54:54 |只看作者 |坛友微信交流群
我试着在做这个table,发现一些要商榷的地方:
你的变量有许多,怎么只见一个变量的输出;你要求每一个变量一个表格?
另外,如果你有许多变量,n的数值应该(也许)随着不同的变量放生变化(不同的缺失),你如何把它放在表头上?

使用道具

8
shaxuan 发表于 2009-8-13 22:07:46 |只看作者 |坛友微信交流群
谢谢楼上的帮忙,我的变量有42个,我就copy了一个。我再放上去几个。你可能发现有些数值不一样,我正查为什么我们和客户的结果不一样。我现在想请教的是怎么得到她的输出方式,请暂时忽略为什么我们的结果数值不一样。谢谢

使用道具

9
jingju11 发表于 2009-8-14 00:02:34 |只看作者 |坛友微信交流群
%macro MeansMcr;
proc sql;
        create table base(var char(10), _name char(20), F char(20), M char(20));
quit;
        %do i=1 %to 42;
        %if &i <10 %then %let var=b0&i;
        %else %let var=b%i;
  proc means nway data=a;
     var &var;
     class c;
          output out=outMeans(drop=_type_ _freq_) n=n sum=sum mean=mean stddev=stv lclm =lclm uclm=uclm;
run;
data outm outF;
        set outMeans;
        length _name $20 F $20 M $20;
        if c=0 then do;
                _name='N';
                F=compbl(put(n, 10.));
                        output outF;
                _name='Sum';
                F=compbl(put(Sum, 10.));
                        output outF;
                _name='Mean(SD)';
                F=compbl(put(mean, 10.1)||' ('||put(stv, 10.1)||' )');
                        output outF;
                _name='95% CI';
                F=compbl('['||put(lclm, 10.1)||','||put(uclm, 10.1)||']');
                        output outF;
        end;
        if c=1 then do;
                _name='N';
                M=compbl(put(n, 10.));
                        output outM;
                _name='Sum';
                M=compbl(put(Sum, 10.));
                        output outM;
                _name='Mean(SD)';
                M=compbl(put(mean, 10.1)||' ('||put(stv, 10.1)||')');
                        output outM;
                _name='95% CI';
                M=compbl('['||put(lclm, 10.1)||','||put(uclm, 10.1)||']');
                        output outM;
        end;
run;
data out;
length var $10;
merge outF(drop=M) outM(drop=F);
var="&var";
keep var _name F M;
run;
proc append base=base data=out force;
run;
%end;
%mend MeansMcr;

数据集base即是你要的。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

10
gylamb 发表于 2009-8-14 18:40:03 |只看作者 |坛友微信交流群
我记得有个wide to long的方法是 proc transpose 怎么实施 我记不清了 总之是把横向的转换成纵向的 或者反之。楼主查查吧

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 18:38