全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4430 4
2016-08-10
data c;                                                                                                                                 
input a b c;                                                                                                                           
cards;                                                                                                                                 
1.1 2.0 3.0                                                                                                                             
6.0 5.0 4.4                                                                                                                             
7.7 8.0 9.0                                                                                                                             
;                                                                                                                                       
run;                                                                                                                                                                                                                                                                          
proc sql;                                                                                                                              
select mean(a,b,c) label='mean of 3'                                                                                                   
from c                                                                                                                                 
;                                                                                                                                       
quit;                                                                                                                                   
结果: 2.1 5.1 8.2                                                                                                                                       
proc sql;                                                                                                                              
select mean(a) label='mean of 1'                                                                                                        
from c                                                                                                                                 
;                                                                                                                                       
quit;  
结果:4.9
请教下:第一次sql过程计算a列的均值为2.1(好像计算的是数据的第一行),第二次计算a列的均值却为4.9(计算的第一列),请问这是什么原因,有什么方法可以避免第一种情况嘛?先谢谢了!




二维码

扫码加我 拉你入群

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

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

全部回复
2016-8-10 10:05:51
通常来说,sql进行的过程跟data步是相反的,即sql是按列执行,data步是按行执行;
但是在你的程序中,用到了mean函数,这是一个summary function,在这些summary function中,如果只有一个变量,就会被认为是sql函数,就会按列计算,比如你的第二个sql程序;
但是如果多于一个变量,此时这个函数就不再被认为是sql里的函数了,就会按照BASE SAS里面的函数来执行,即按行来执行,就是你的第一个sql程序那样。

如果要计算三列的平均数,可以分开写:
proc sql;                                                                                                                              
select mean(a) label='mean of a', mean(b) label='mean of b', mean(c) label='mean of c'                                                                                                        
from c;
quit;
二维码

扫码加我 拉你入群

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

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

2016-8-11 09:29:20
wwang111 发表于 2016-8-10 10:05
通常来说,sql进行的过程跟data步是相反的,即sql是按列执行,data步是按行执行;
但是在你的程序中,用到 ...
老师,那proc 步是不是也是按列执行?
二维码

扫码加我 拉你入群

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

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

2016-8-11 11:15:52
我觉得proc sql跟其他的proc 步不是一回事,sql是单独的一部分内容;
至于其他的proc步怎么执行我还真没研究过,但是我感觉不是很重要,因为常用的一些proc步,比如proc print, proc means, proc report等等,目的都是输出一个结果,不像data步那样细致。
二维码

扫码加我 拉你入群

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

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

2016-8-11 20:47:52
wwang111 发表于 2016-8-11 11:15
我觉得proc sql跟其他的proc 步不是一回事,sql是单独的一部分内容;
至于其他的proc步怎么执行我还真没研 ...
嗯嗯,谢谢老师,太感谢了!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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