楼主: redaring
7227 4

[原创博文] 求教,怎么实现每几行计算平均值? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
0.0600
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
4910 点
帖子
102
精华
0
在线时间
123 小时
注册时间
2009-11-22
最后登录
2018-2-15

楼主
redaring 发表于 2012-5-25 00:39:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如图这样的数据格式,我想每3行计算一个value的平均值,然后是 by type y;
如果在同一type 和y下最后剩下的不够3个数,则剩下的几个数算平均值,例如type=a and y=2001 一共有7个数,第1~3算平均,第4~6算平均,剩下第7个数自己算平均,如果剩下两个就用两个算平均。

不知道程序应该怎么写,希望大侠帮忙一下,非常感谢。

后面放了这个示例数据的语句。谢谢了!

data.jpg

data a;
input type $ y value @@;
cards;
a 2001 2 a 2001 3 a 2001 5 a 2001 7 a 2001 1 a 2001 4 a 2001 8
a 2002 6 a 2002 4 a 2002 8 a 2002 7 a 2002 2 a 2002 9
b 2001 7 b 2001 3 b 2001 4 b 2001 2 b 2001 6 b 2001 1
b 2002 1 b 2002 2 b 2002 3 b 2002 4 b 2002 5 b 2002 6 b 2002 7 b 2002 8
;
run;
二维码

扫码加我 拉你入群

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

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

关键词:平均值 value Input cards type 平均值 程序

沙发
webgu 发表于 2012-5-25 08:25:55
  1. proc sort data=a;
  2.   by type y;
  3. run;

  4. data b;
  5.   set a;
  6.   by type y;
  7. if first.y then tag=0;
  8.    tag+1;
  9. if mod(tag,3)=1 then tag_group+1;
  10. run;

  11. proc means data=b;
  12.   var value;
  13.   by tag_group;
  14. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

藤椅
redaring 发表于 2012-5-25 11:35:12
webgu 发表于 2012-5-25 08:25
已经成功实现了,非常感谢你的帮忙!

板凳
webgu 发表于 2012-5-25 11:36:26
redaring 发表于 2012-5-25 11:35
已经成功实现了,非常感谢你的帮忙!
不客气。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

报纸
pl172231 发表于 2012-5-25 15:31:15
webgu 发表于 2012-5-25 08:25
谢谢

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

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