楼主: myccc
3246 7

求按月汇总数据 [推广有奖]

  • 2关注
  • 0粉丝

已卖:501份资源

本科生

66%

还不是VIP/贵宾

-

威望
0
论坛币
663 个
通用积分
0
学术水平
3 点
热心指数
6 点
信用等级
1 点
经验
866 点
帖子
74
精华
0
在线时间
112 小时
注册时间
2011-11-18
最后登录
2019-7-24

楼主
myccc 发表于 2012-1-10 20:08:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原始sas dataset如下:每行是每天的日期和产品,现在要求每个月的产品统计
Obs dtime Product
1 01DEC2011 computer
2 02DEC2011 computer
3 06DEC2011 pen
4 15SEP2011 phone
5 20SEP2011 pen
6 21SEP2011 phone

汇总结果为:
dtime product num
DEC   computer 2
DEC   pen      1
SEP   phone    2
SEP   pen      1

求用sas程序如何实现。
二维码

扫码加我 拉你入群

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

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

关键词:Computer compute Product dataset Comput computer product 产品 程序 如何

沙发
暗战 发表于 2012-1-10 20:15:01
英文,真的看不懂
[url=http://www.fujiaoguan.com/]氟胶板[/url]|[url=http://www.xdccj.com]波纹管[/url]
www.fujiaoguan.com

藤椅
shenliang_111 发表于 2012-1-11 01:27:14
  1. data a;
  2. input obs dtime :date9. product $;
  3. format dtime date9.;
  4. cards;
  5. 1 01DEC2011 computer
  6. 2 02DEC2011 computer
  7. 3 06DEC2011 pen
  8. 4 15SEP2011 phone
  9. 5 20SEP2011 pen
  10. 6 21SEP2011 phone
  11. ;
  12. proc sql;
  13. create table result(rename=(dtime2=dtime)) as
  14. select put(dtime,monname3.) as dtime2,product,count(*) as num
  15. from a
  16. group by dtime2,product
  17. order by dtime2,product;
  18. quit;
复制代码
已有 1 人评分学术水平 收起 理由
myccc + 1 简洁实用

总评分: 学术水平 + 1   查看全部评分

板凳
myccc 发表于 2012-1-11 09:51:05
非常感谢shenliang_111,monname3.这个format用的太好了。

报纸
shenliang_111 发表于 2012-1-11 10:42:24
myccc 发表于 2012-1-11 09:51
非常感谢shenliang_111,monname3.这个format用的太好了。
呵呵,format太多了,我也是查看资料的...

地板
myccc 发表于 2012-1-11 18:56:05
shenliang_111 发表于 2012-1-11 10:42
呵呵,format太多了,我也是查看资料的...
假如原始数据为如下:
Obs dtime    computer pen
1 01DEC2011 Y        Y   
2 02DEC2011 Y        N   
3 06DEC2011 Y        Y   
4 15SEP2011 N        Y   
5 20SEP2011 Y        Y   
6 21SEP2011 N        N   


统计结果如下(只统计值是Y的行)
dtime product num
DEC   computer 3
DEC   pen      2
SEP   computer 1
SEP   pen      2

这个稍难些,请问如何实现哦

7
shenliang_111 发表于 2012-1-11 20:57:25
  1. data a;
  2. input obs dtime :date9. computer $ pen $;
  3. format dtime date9.;
  4. cards;
  5. 1 01DEC2011 Y        Y   
  6. 2 02DEC2011 Y        N   
  7. 3 06DEC2011 Y        Y   
  8. 4 15SEP2011 N        Y   
  9. 5 20SEP2011 Y        Y   
  10. 6 21SEP2011 N        N
  11. ;
  12. proc sql;
  13. create table temp  as
  14. select put(dtime,monname3.) as dtime2,sum(
  15. case when(computer eq 'Y') then 1 else 0 end) as  computer,
  16. sum(case when(pen eq 'Y') then 1 else 0 end) as pen
  17. from a
  18. group by dtime2;
  19. quit;
  20. proc transpose data=temp out=result(rename=(dtime2=dtime _name_=product col1=num));
  21. by dtime2;
  22. run;
复制代码
已有 1 人评分学术水平 收起 理由
myccc + 1 高手

总评分: 学术水平 + 1   查看全部评分

8
myccc 发表于 2012-1-11 21:12:18
proc sql 用的太棒了

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

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