楼主: xiaosanmao
2363 6

[原创博文] 请教一个平均数程序如何写的问题,谢谢 [推广有奖]

  • 0关注
  • 0粉丝

博士生

39%

还不是VIP/贵宾

-

威望
0
论坛币
187 个
通用积分
0.0001
学术水平
1 点
热心指数
4 点
信用等级
0 点
经验
4639 点
帖子
247
精华
0
在线时间
279 小时
注册时间
2009-9-3
最后登录
2012-1-19

楼主
xiaosanmao 发表于 2011-12-2 14:14:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原始的比较复杂,我简化一下,比方有下面的数据
a  b
1  1
1  2
1  3
1  4
2  5
2  6

按照a分类,求b的平均值,(但是不包括分类a的第一行),生成结果如下
a  b
1 1
1 2
1 3
1 4
1  3       本行为新生成的,涉及插入问题,  其中 3=(2+3+4)/3
2 5
2 6  
2 6        本行也为新生成的,其中 6=6/1,分类a至少有两行,去掉一行至少还有一行,所以不用担心


谢谢关注
二维码

扫码加我 拉你入群

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

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

关键词:平均数 如何写 平均值 程序 如何 平均数 平均值

本帖被以下文库推荐

沙发
tj0412ymy 发表于 2011-12-2 14:36:15
  1. data test;
  2. input a b;
  3. cards;
  4. 1  1
  5. 1  2
  6. 1  3
  7. 1  4
  8. 2  5
  9. 2  6
  10. ;
  11. run;
  12. proc sort data=test;by a;run;
  13. data test1;
  14. set test;
  15. by a;
  16. if first.a then delete;
  17. run;
  18. proc sql;
  19. insert into test
  20. select a,mean(b) as b
  21. from test1
  22. group by a;
  23. quit;
  24. proc sort data=test out=final;by a;run;
  25. proc print data=final;run;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

藤椅
xiaosanmao 发表于 2011-12-2 14:39:12
多谢多谢,在这个下雪的午后,您的热心帮助真像一杯热饮一样暖心

板凳
soporaeternus 发表于 2011-12-2 14:39:41
first.不算
累加计算
last.算均值+多输出一行
Let them be hard, but never unjust

报纸
baoaibaobao 发表于 2011-12-2 16:53:26
soporaeternus 发表于 2011-12-2 14:39
first.不算
累加计算
last.算均值+多输出一行

地板
shenliang_111 发表于 2011-12-3 12:03:55
soporaeternus 发表于 2011-12-2 14:39
first.不算
累加计算
last.算均值+多输出一行
  1. data a;
  2. input a b;
  3. cards;
  4. 1  1
  5. 1  2
  6. 1 3
  7. 1 4
  8. 2 5
  9. 2 6
  10. ;
  11. data result22(drop=summ count);
  12. summ=0;
  13. count=0;
  14. do _n_=1 by 1 until(last.a);
  15. set a;
  16. by a;
  17. output;
  18. if not first.a then do;
  19. summ+b;
  20. count+1;
  21. end;
  22. if last.a then do;
  23. b=summ/count;
  24. output;
  25. end;
  26. end;
  27. run;
复制代码
只会这样!有点麻烦

7
可~乐 发表于 2011-12-4 10:31:02
data test;
input a b;
cards;
1  1
1  2
1  3
1  4
2  5
2  6
;
run;
proc sort data=test;
        by a;
run;
data test1;
        retain sum n;
        set test;
        by a;
                if first.a then do;
                        sum=0;
                        n=0;
                end;
                else do;
                        sum+b;
                        n+1;
                end;
                output;
                if last.a then do;
                        b=sum/n;
                        output;
                end;
                drop sum n;
run;

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

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