楼主: crasteham
1243 3

如何求某变量前20%和后20%值的平均数? [推广有奖]

  • 0关注
  • 2粉丝

讲师

76%

还不是VIP/贵宾

-

威望
1
论坛币
1780 个
通用积分
7.3500
学术水平
8 点
热心指数
8 点
信用等级
7 点
经验
11170 点
帖子
257
精华
0
在线时间
289 小时
注册时间
2012-11-12
最后登录
2024-3-29

100论坛币
有两个变量,一个是年份,一个是销量。
一个年份会对应很多个销量。现在需要求出每个年份对应的销量中,前20%销量的平均数。
输出按顺序排列的年份,以及对应的前20%销量的平均数。

谢谢各位大大!!!

例如
Yearsales

1992

91

1994

24

1993

56

1992

46

1994

10

1992

15

1994

89

1992

31

1993

11

1994

2

1993

49

1992

34

1994

39

1992

31

1993

66

关键词:平均数 sales years year sale 平均数 如何
沙发
yongyitian 发表于 2017-2-25 12:36:35 |只看作者 |坛友微信交流群
  1. /* create a sample dataset */

  2. data yearsales;
  3.    do year=1992 to 1994;
  4.       do I = 1 to ranuni(12345)*100 + 50;
  5.         sale = int(ranuni(123456)*120);
  6.         output;
  7.    end; end;
  8. run;

  9. proc sql;
  10.     create table yearsale_1 as
  11.     select year, sale, count(*) as N_by_year
  12.     from yearsales
  13.     group by year
  14.     order by year, sale desc;
  15. quit;

  16. data yearsale_top20;
  17.     set yearsale_1;
  18.    by year;
  19.    if first.year = 1 then n=1;
  20.    else n+1;
  21.    if  n/N_by_year*100 <= 20 then output;
  22. run;

  23. proc sql;  
  24.    create table want as
  25.    select year, avg(sale) as top20Mean
  26.    from yearsale_top20
  27.    group by year
  28.    order by year;
  29. quit;
复制代码

使用道具

藤椅
crasteham 发表于 2017-2-25 20:42:27 |只看作者 |坛友微信交流群
yongyitian 发表于 2017-2-25 12:36
谢谢!想问一下如何做到同时输出前20%和后20%到一个表里啊

使用道具

板凳
yongyitian 发表于 2017-2-26 11:35:51 |只看作者 |坛友微信交流群
crasteham 发表于 2017-2-25 20:42
谢谢!想问一下如何做到同时输出前20%和后20%到一个表里啊
输出到另外一个数据集, 然后 merge by year

使用道具

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

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

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

GMT+8, 2024-4-25 09:04