SAS中文论坛

标题: 关于大批量数据计算均数和标准差 [打印本页]

作者: shiyiming    时间: 2008-8-29 12:47
标题: 关于大批量数据计算均数和标准差
我处理的一批数据,需要计算每个变量的均数和标准差,并且生成在一个数据表里面。我自己编写了一个程序,把mean和std放在一个means语句里,他们都被排在一行了,所以我就用了两次然后再把纵向合并,虽然实现了,但是觉得means用了两次,感觉繁了点,不知道是不是可以简化一下的?变量有几万个吧,样本量是975。下面是我的程序:
proc means data=mydata.chr2 mean noprint;
output out=m1 mean=;
run;
proc means data=mydata.chr2 std noprint;
output out=m2 std=;
run;
data m;
   set m1 m2;
run;
proc TRANSPOSE data=m out=mean_std;/**数据转置***/
var _all_;
run;
data mean_std;
   set mean_std;
   rename COL1=mean col2=std;
run;
data mean_std;
   set mean_std;
   if mean=0 or mean=975 then delete;
run;
proc export data=mean_std
      outfile="E:\data\chr2\chr2_mean_std.txt";
run;
作者: shiyiming    时间: 2008-8-29 19:48
标题: Re: 关于大批量数据计算均数和标准差
看了你的代码,帮你写了段等价程序:
[code:ppexipzk]
proc means data=mydata.chr2 noprint;
        output out=mean_std(drop=_freq_ _type_ where=(col1_mean not in (0,975))) mean= sum= /autoname;
run;
proc export data=mean_std
        outfile="E:\data\chr2\chr2_mean_std.txt";
run;
[/code:ppexipzk]
作者: shiyiming    时间: 2008-8-31 09:50
标题: Re: 关于大批量数据计算均数和标准差
这样子不行啊!
虽然列表出现的符合要求,是每个变量的mean和std,但是生成的数据集并不是这样子的!mean和std都被放在同一行里了!
作者: shiyiming    时间: 2008-9-1 19:39
标题: Re: 关于大批量数据计算均数和标准差
我写的是和你写的程序等价。
你可以去运行一下,至于你别的要求,不是很明白,我只是通过你的程序来理解你的意思,
你看看你那个程序。
作者: shiyiming    时间: 2008-9-1 21:30
标题: Re: 关于大批量数据计算均数和标准差
我亲自尝试了一下,出来的还是排在一行,跟输出的列表不一样的!所以不得已菜用了两次,分别生成均数和标准差,然后合并再转置才得到,是麻烦了点!但是速度还可以接受,半分钟可以处理六七万个变量,已经满足了,呵呵




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2