楼主: xulimei1986
1281 4

求助sas程序? [推广有奖]

  • 3关注
  • 0粉丝

博士生

68%

还不是VIP/贵宾

-

威望
0
论坛币
41 个
通用积分
0
学术水平
3 点
热心指数
8 点
信用等级
3 点
经验
22590 点
帖子
138
精华
0
在线时间
439 小时
注册时间
2012-3-20
最后登录
2019-5-11

楼主
xulimei1986 发表于 2012-12-28 12:25:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原始数据:
姓名 日期 消费
张三 2012/12/11 1254
张三 2012/12/11 614
张三 2012/12/12 239
张三 2012/12/12 6187
张三 2012/12/13 25885
想要得到的结果1:
姓名 日期 消费 消费天数
张三 2012/12/11 1254 1
张三 2012/12/11 614 1
张三 2012/12/12 239 2
张三 2012/12/12 6187 2
张三 2012/12/13 25885 3
结果2:
姓名 消费天数 消费总额
张三 3  34179
二维码

扫码加我 拉你入群

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

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

关键词:sas程序 原始数据 程序

家家有本难念的经,计较的少一点,会和睦许多!!

沙发
Imasasor 发表于 2012-12-28 12:38:16
  1. data a;
  2. input name $ date:yymmdd10. money;
  3. format date yymmdd10.;
  4. cards;
  5. 张三 2012/12/11 1254
  6. 张三 2012/12/11 614
  7. 张三 2012/12/12 239
  8. 张三 2012/12/12 6187
  9. 张三 2012/12/13 25885
  10. 李四 2012/12/12 239
  11. 李四 2012/12/12 6187
  12. 李四 2012/12/13 25885
  13. ;
  14. run;
  15. data b;
  16. set a;
  17. retain day;
  18. if first.name then day=1;
  19. if not first.name and date^=lag(date) then day+1;
  20. by name notsorted;
  21. run;

  22. proc sql;
  23. create table c as select distinct(name), count(distinct(date)) as days, sum(money) as  total
  24. from a group by name;
  25. quit;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xulimei1986 + 1 + 1 + 1 已帮助解决了问题,学习了!!

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
webgu 发表于 2012-12-28 12:52:26
  1. data demo;
  2. format date yymmdd10.;
  3. input name $ date yymmdd10. consumption;
  4. datalines;
  5. 张三 2012/12/11 1254
  6. 张三 2012/12/11 614
  7. 张三 2012/12/12 239
  8. 张三 2012/12/12 6187
  9. 张三 2012/12/13 25885
  10. ;

  11. data want1(drop=tmp sum_con ) want2(drop=tmp date consumption);
  12. retain name date  consumption num_day sum_con;
  13.     set demo end=last;
  14. tmp=lag(date);
  15. sum_con+consumption;
  16. if date^=tmp then  num_day+1;
  17. if last then output want2;
  18. output want1;
  19. run;
复制代码

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xulimei1986 + 1 + 1 + 1 问题已解决,多谢~~

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

板凳
webgu 发表于 2012-12-28 13:03:52
  1. data demo;
  2. format date yymmdd10.;
  3. input name $ date yymmdd10. consumption;
  4. datalines;
  5. 张三 2012/12/11 1254
  6. 张三 2012/12/11 614
  7. 张三 2012/12/12 239
  8. 张三 2012/12/12 6187
  9. 张三 2012/12/13 25885
  10. 李三 2012/12/12 6187
  11. 李三 2012/12/13 25885
  12. ;

  13. proc sort data=demo;
  14.         by name;
  15. run;

  16. data want1(drop=tmp sum_con ) want2(drop=tmp date consumption);
  17. retain name date  consumption num_day sum_con;
  18.     set demo end=last;
  19.         by name;
  20. tmp=lag(date);
  21. if first.name then
  22.   do num_day=0;
  23.       sum_con=0;
  24.   end;
  25. sum_con+consumption;
  26. if date^=tmp then  num_day+1;
  27. if last.name  then output want2;
  28. output want1;
  29. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

报纸
xulimei1986 发表于 2012-12-28 13:19:39
webgu 发表于 2012-12-28 13:03
谢谢了~~
家家有本难念的经,计较的少一点,会和睦许多!!

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

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