楼主: jerry0501
1411 2

[有偿编程] sas编程求助 [推广有奖]

  • 0关注
  • 0粉丝

已卖:98份资源

本科生

68%

还不是VIP/贵宾

-

威望
0
论坛币
620 个
通用积分
0.6600
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
584 点
帖子
30
精华
0
在线时间
158 小时
注册时间
2008-5-8
最后登录
2020-9-21

楼主
jerry0501 发表于 2013-11-18 01:53:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问sas如何实现以下数据处理:
假设我有100个观测值,两个变量age和income。我想求出每个观测值所在年龄阶段中(比如age相差不超过2年)的所有人的income平均值。

详细点说就是,我想加第三个变量,avg_income。比如有第一个人50岁,他的avg_income就是所有48-52岁人的income平均值。第二个人30岁,avg_income就是所有28-32岁人的平均值。以此类推。

另外希望年龄的差距可以设定,比如把两年换成5年。

多谢
二维码

扫码加我 拉你入群

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

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

关键词:SAS编程 Income Come 年龄阶段 数据处理 income 平均值 如何

本帖被以下文库推荐

沙发
yongyitian 发表于 2013-11-18 09:16:32
  1. data Income;
  2.    do ID = 10001 to 10010;
  3.         age = 20 + int(ranuni(12345)*15);
  4.         income = 2000 + int(ranuni(12345)*2000);
  5.       output;
  6.    end;
  7. run;

  8. data want;
  9.     set income;
  10.         S = 0;
  11.         n = 0;
  12.     do p = 1 to nobs;
  13.       set income(rename=(income=income1 age=age1)) nobs=nobs point=p;
  14.         if abs(age-age1)<= 3 then do;
  15.            s = s +income1;
  16.            n = n+1;
  17.         end;
  18.     end;  
  19.     avgincome = s/n;
  20.     keep id age income avgincome;
  21. run;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
lchw001 + 1 + 1 + 1 精彩帖子
playmore + 5 + 5 + 5 观点有启发

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

藤椅
吕小布韦 发表于 2013-11-18 12:53:40
yongyitian 发表于 2013-11-18 09:16
楼上略微小瑕疵:set income(rename=(income=income1 age=age1)) nobs=nobs point=p;
添加drop选项, 改为set income(rename=(income=income1 age=age1) drop=id) nobs=nobs point=p;
瑕不掩瑜!

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 有道理

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 08:39