楼主: 2286116865
4207 4

[问答] 请教sas中proc sql; [推广有奖]

  • 2关注
  • 4粉丝

讲师

16%

还不是VIP/贵宾

-

威望
0
论坛币
367 个
通用积分
1.7284
学术水平
1 点
热心指数
6 点
信用等级
1 点
经验
7033 点
帖子
294
精华
0
在线时间
294 小时
注册时间
2015-5-3
最后登录
2024-1-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
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(计算的第一列),请问这是什么原因,有什么方法可以避免第一种情况嘛?先谢谢了!




二维码

扫码加我 拉你入群

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

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

关键词:proc sql ROC sql Select Elect

回帖推荐

wwang111 发表于2楼  查看完整内容

通常来说,sql进行的过程跟data步是相反的,即sql是按列执行,data步是按行执行; 但是在你的程序中,用到了mean函数,这是一个summary function,在这些summary function中,如果只有一个变量,就会被认为是sql函数,就会按列计算,比如你的第二个sql程序; 但是如果多于一个变量,此时这个函数就不再被认为是sql里的函数了,就会按照BASE SAS里面的函数来执行,即按行来执行,就是你的第一个sql程序那样。 如果要计算三列的 ...
沙发
wwang111 发表于 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;
已有 1 人评分学术水平 热心指数 收起 理由
踩云飞 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

藤椅
2286116865 发表于 2016-8-11 09:29:20 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-10 10:05
通常来说,sql进行的过程跟data步是相反的,即sql是按列执行,data步是按行执行;
但是在你的程序中,用到 ...
老师,那proc 步是不是也是按列执行?

使用道具

板凳
wwang111 发表于 2016-8-11 11:15:52 |只看作者 |坛友微信交流群
我觉得proc sql跟其他的proc 步不是一回事,sql是单独的一部分内容;
至于其他的proc步怎么执行我还真没研究过,但是我感觉不是很重要,因为常用的一些proc步,比如proc print, proc means, proc report等等,目的都是输出一个结果,不像data步那样细致。

使用道具

报纸
2286116865 发表于 2016-8-11 20:47:52 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-11 11:15
我觉得proc sql跟其他的proc 步不是一回事,sql是单独的一部分内容;
至于其他的proc步怎么执行我还真没研 ...
嗯嗯,谢谢老师,太感谢了!

使用道具

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

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

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

GMT+8, 2024-4-28 02:20