楼主: rwalker
2396 6

用sas求个人收入之上的平均收入 [推广有奖]

  • 0关注
  • 0粉丝

已卖:391份资源

讲师

6%

还不是VIP/贵宾

-

威望
0
论坛币
363 个
通用积分
7.1800
学术水平
4 点
热心指数
8 点
信用等级
5 点
经验
2451 点
帖子
118
精华
0
在线时间
531 小时
注册时间
2009-3-13
最后登录
2025-12-17

楼主
rwalker 发表于 2011-7-15 16:27:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题描述:
x  y
1  5
1  2
1   1
1  3
1 4
1  6
2   3
2   2
2  1
2   6
2   4
先按x分组,然后求每一个观测值在组内y值大于该观测值的所有y值的加权平均。每一个观测值都要求这样的变量值。
请问应该怎么用sas编程?
二维码

扫码加我 拉你入群

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

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

关键词:平均收入 SAS编程 观测值 变量值 SAS 分组 均值

沙发
bobguy 发表于 2011-7-16 09:02:55
rwalker 发表于 2011-7-15 16:27
问题描述:
x  y
1  5
1  2
1   1
1  3
1 4
1  6
2   3
2   2
2  1
2   6
2   4
先按x分组,然后求每一个观测值在组内y值大于该观测值的所有y值的加权平均。每一个观测值都要求这样的变量值。
请问应该怎么用sas编程?
It is not clear. Can you state your problem in a different way?

藤椅
ls5655 发表于 2011-7-20 17:22:07
data mm;
input x y;
cards;
1  5
1  2
1   1
1  3
1 4
1  6
2   3
2   2
2  1
2   6
2   4
;
run;


data nn;
do until(last.x);
set mm;
by x;
retain tmp n 0;
if first.x then do;
num2=0;
n=0;
tmp=y;
end;
else do;
n+1;
tmp+y;
num2=(tmp-y)/n;

end;
output;
end;
run;

板凳
ls5655 发表于 2011-7-20 17:26:24
掉了sort的一部分程序
data kk;
input x y;
cards;
1  5
1  2
1   1
1  3
1 4
1  6
2   3
2   2
2  1
2   6
2   4
;
run;


proc sort data=kk out=mm;
by x descending y;
run;


data nn;
do until(last.x);
set mm;
by x;
retain tmp n 0;
if first.x then do;
num2=0;
n=0;
tmp=y;
end;
else do;
n+1;
tmp+y;
num2=(tmp-y)/n;

end;
output;
end;
run;

报纸
yugao1986 发表于 2011-7-20 17:43:36
我的理解是这个样子的
  1. /*案例数据*/
  2. data mm;
  3. input x y;
  4. cards;
  5. 1 5
  6. 1 2
  7. 1 1
  8. 1 3
  9. 1 4
  10. 1 6
  11. 2 3
  12. 2 2
  13. 2 1
  14. 2 6
  15. 2 4
  16. ;
  17. run;
  18. /*求均值*/
  19. proc means data=mm mean;
  20. var y;
  21. class x;
  22. output out=result mean=mean;
  23. run;
  24. /*合并两数据,并保留大于平均值的y值*/
  25. data last;
  26. merge mm result;
  27. by x;
  28. if y>mean then output;
  29. run;
复制代码
1# rwalker
已有 1 人评分经验 热心指数 收起 理由
crackman + 60 + 1 热心帮助其他会员

总评分: 经验 + 60  热心指数 + 1   查看全部评分

三人行必有我师

地板
dyes0506 发表于 2011-8-6 11:53:48
设此表为test(x,y)
proc sql;
     select x,y
     from test as a left join (select x,mean(y) as avg_y from test group by x) as b on a.x=b.x
     where a.y > b.avg_y;
quit;
已有 1 人评分经验 热心指数 收起 理由
crackman + 40 + 1 热心帮助其他会员

总评分: 经验 + 40  热心指数 + 1   查看全部评分

从数据到结论过程关键的是人不是软件......

7
moonstarpursuit 发表于 2011-8-8 09:55:24
proc sql;
select x,y
from table_name
group by x
having y>avg(y);
quit;
不知道楼主是不是这个意思

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 21:29