楼主: prown
3999 2

求教SAS分组求比例问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
673 个
通用积分
13.3516
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
2196 点
帖子
84
精华
0
在线时间
320 小时
注册时间
2004-10-12
最后登录
2023-5-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题如下:
源文件写在一个access文件里(已经分类排序),已经导入SAS,现在要在表右方添加两列:
一列名称为行业销售收入占比(share_sales),求出该年各个省份每个行业的每个公司销售收入占全行业的比例。
另一列名称为该行业前两家公司销售收入比例之和(front_2_share_sales),这个变量作为每个公司身处在行业内的竞争程度。

数据量很大,有近百万。

year       address         industry      company       sales          share_sales          front2_share_sales
1996        01                 001            xxxx1             5                       
1996        01                 001            xxxx2             4         
1996        01                 001            xxxx3             3
1996        01                 002            xxxx4             9
1996              01                                002            xxxx5             8
1996        01                 002            xxxx6             7
1996        02                 001            xxxx7            10
1996        02                 001            xxxx8             6
1996        02                 001            xxxx9             5
1996        03      ............
................

在没有分组的情况下求比例比较简单,但是涉及到了两重分组,所以处理起来没有想出有效的方法,希望高手慷慨解答这个问题,最好写出完整代码,不胜感激。
二维码

扫码加我 拉你入群

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

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

关键词:Industry address company access compan 行业 收入 源文件

沙发
邓贵大 发表于 2013-5-11 16:49:33 |只看作者 |坛友微信交流群
  1. data hell1;
  2. do _n_=1 by 1 until(last.industry);
  3. set hell;
  4. by year address industry descending sales;
  5. total_sales = sum(total_sales, sales);
  6. if _N_<3 then front2_share_sales = sum(front2_share_sales, sales);
  7. end;
  8. do until(last.industry);
  9. set hell;
  10. by year address industry;
  11. share_sales = sales/total_sales;
  12. output;
  13. end;
  14. run;
复制代码
Be still, my soul: the hour is hastening on
When we shall be forever with the Lord.
When disappointment, grief and fear are gone,
Sorrow forgot, love's purest joys restored.

使用道具

藤椅
Eternal0601 发表于 2013-5-11 19:24:18 |只看作者 |坛友微信交流群
邓贵大 发表于 2013-5-11 16:49
大侠,对您的这个程序运行时不是很清楚,望指教,谢谢!
1.运行过程:  猜的是 按照year address industry为一组处理,如lz的前面到3条记录,第一次do--until将这个3条处理完后,第二次的do--until时候,指针是又跳到第一条记录,完成这一组数据处理;接着继续按照这种形式处理第二组数据(4-6条)吧

2._n_值的变化,我在您程序第二次出现do until ---end中加入  put 'test' @10_n_=;  之后,显示_n_的值都是第一次do until---end处理一组数据后的值,并没有如想像中从_n_=1开始变化

使用道具

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

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

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

GMT+8, 2024-9-20 02:52