楼主: appleqiuqiu
6071 6

[问答] SAS里能直接对数据集里的变量应用mean之类的函数吗 [推广有奖]

  • 0关注
  • 1粉丝

副教授

41%

还不是VIP/贵宾

-

威望
0
论坛币
3631 个
通用积分
2.5000
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4191 点
帖子
133
精华
0
在线时间
1514 小时
注册时间
2010-4-27
最后登录
2022-6-22

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问大家一个小问题,就是最近我遇到这样一个事,下面是我的log 日志

捕获.PNG
我就想问在SAS里能向在R里似的直接对变量应用函数吗?这里似乎提示我不行哎。。。如果一定要这样用,应该怎么办呢?因为我后面还想写这样的语句:

data final;
set final;
if expense<mean(expense)+3*std(expense);

run;

多谢各位大侠了!!
二维码

扫码加我 拉你入群

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

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

关键词:mean 数据集 expense final fina

沙发
就喜欢马 发表于 2014-12-20 23:30:17 |只看作者 |坛友微信交流群
这个得用proc sql:
  1. proc sql;
  2. create table m as select age,mean(expense) as mean,std(expense) as std,calculated mean+3*calculated std as want
  3. from final
  4. having expense>want;
  5. quit;
  6. data m;
  7. set m;
  8. drop  mean std want;
  9. run;
复制代码
已有 3 人评分经验 论坛币 收起 理由
李会超 + 40 精彩帖子
heguima + 1 精彩帖子
admin_kefu + 40 精彩帖子

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

使用道具

藤椅
就喜欢马 发表于 2014-12-20 23:45:32 |只看作者 |坛友微信交流群
就喜欢马 发表于 2014-12-20 23:30
这个得用proc sql:
上面有个age忘了改成expense。
再补充一下,对列求和、计数、算标准差等可以用proc sql,而data set 数据步只能对行运算,proc sql可用的函数有:
AVG, MEAN                 mean or average of values
COUNT, FREQ, N                 number of nonmissing values
CSS                                 corrected sum of squares
CV                                 coefficient of variation (percent)
MAX                                 largest value
MIN                                 smallest value
NMISS                         number of missing values
PRT                                 probability of a greater absolute value of Student's t
RANGE                         range of values
STD                                 standard deviation
STDERR                         standard error of the mean
SUM                                 sum of values
T                                 student's t value for testing the hypothesis that the population mean is zero
USS                                 uncorrected sum of squares
VAR                                 variance

使用道具

板凳
yongyitian 发表于 2014-12-21 00:01:03 |只看作者 |坛友微信交流群
因为数据步是按行(观测)处理数据的。
所以数据步中的这些函数,如mean(), std() 是求同一条观测,多个变量的平均值。
如 mean_xy = mean(x,y);

要在数据步中加入某些变量的mean,std等,需要用另一个数据步,proc mean; 或者
proc sql; 计算好以后再加入到 数据步中。

  1. proc sql;
  2.    create table mean_weight as
  3.    select avg(weight) as m_weight, std(weight) as std_weight
  4.    from sashelp.class;
  5. quit;

  6. data class;
  7. if _n_ = 1 then set mean_weight;
  8. set sashelp.class;
  9. run;
复制代码
已有 1 人评分经验 收起 理由
李会超 + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

使用道具

报纸
appleqiuqiu 发表于 2014-12-22 15:43:13 |只看作者 |坛友微信交流群
就喜欢马 发表于 2014-12-20 23:45
上面有个age忘了改成expense。
再补充一下,对列求和、计数、算标准差等可以用proc sql,而data set 数据 ...
太感谢啦!!!不仅回答了我的问题,还有这么多的扩展,真是学习了!!!

使用道具

地板
appleqiuqiu 发表于 2014-12-22 15:44:04 |只看作者 |坛友微信交流群
yongyitian 发表于 2014-12-21 00:01
因为数据步是按行(观测)处理数据的。
所以数据步中的这些函数,如mean(), std() 是求同一条观测,多个变 ...
非常感谢,这个对我很有用,瞬间逻辑清晰了很多!!!

使用道具

7
李会超 发表于 2014-12-23 12:01:56 |只看作者 |坛友微信交流群
或者用proc means data=a;
output out=b;
run;这种

使用道具

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

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

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

GMT+8, 2024-4-26 14:16