楼主: benny10
2513 8

[原创博文] 计算总合! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2230 点
帖子
99
精华
0
在线时间
67 小时
注册时间
2007-6-23
最后登录
2020-3-25

楼主
benny10 发表于 2010-9-29 00:20:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问各位前辈一个问题,现在我想将同日期,同ID,同行动的数量加总起来变成一新的变量(总合),不知道其程序该如何写呢,请各位前辈帮帮我吧!
日期 ID 时间 行动 数量 总合
2008/1/5 1 100101 A 2 56
2008/1/5 1 102201 A 3 56
2008/1/5 1 102456 B 1
2008/1/5 1 105533 A 51 56
2008/1/5 2 110055 A 11 28
2008/1/5 2 112051 A 12 28
2008/1/5 2 132505 A 5 28
2008/1/6 3 133555 B 6
2008/1/6 1 101200 B 41 42
2008/1/6 1 115555 A 55
2008/1/6 1 125455 B 1 42
2008/1/7 2 113311 A 2 5
2008/1/7 2 115555 A 3 5
2008/1/7 3 134455 B 44
2008/1/8 3 105633 A 15
2008/1/8 3 112255 A 5 20
2008/1/8 3 120044 B 6
2008/1/8 1 125444 A 7
2008/1/8 1 133333 A 8 15
二维码

扫码加我 拉你入群

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

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

关键词:帮帮我吧 如何写 不知道 程序 如何

沙发
cql1086 发表于 2010-9-29 00:26:14
好有难度~~~……

藤椅
hopewell 发表于 2010-9-29 08:40:55
没太明白你的规则
开始我以为是把总和的数据拼回原数据集,但发现有些观测的总和是missing; 于是我猜group的观测数等于1的总和值不要; 但问题又来了,对有2条观测的组为什么有些组是2条观测都有总和值,而有些组只有后一条观测有总和值呢?
  1. data raw;
  2.     infile datalines truncover;
  3.     input date :yymmdd10. id time $ action $ count sum;
  4.     format date yymmdd10.;
  5. datalines;
  6. 2008/1/5 1 100101 A 2 56
  7. 2008/1/5 1 102201 A 3 56
  8. 2008/1/5 1 102456 B 1
  9. 2008/1/5 1 105533 A 51 56
  10. 2008/1/5 2 110055 A 11 28
  11. 2008/1/5 2 112051 A 12 28
  12. 2008/1/5 2 132505 A 5 28
  13. 2008/1/6 3 133555 B 6
  14. 2008/1/6 1 101200 B 41 42
  15. 2008/1/6 1 115555 A 55
  16. 2008/1/6 1 125455 B 1 42
  17. 2008/1/7 2 113311 A 2 5
  18. 2008/1/7 2 115555 A 3 5
  19. 2008/1/7 3 134455 B 44
  20. 2008/1/8 3 105633 A 15
  21. 2008/1/8 3 112255 A 5 20
  22. 2008/1/8 3 120044 B 6
  23. 2008/1/8 1 125444 A 7
  24. 2008/1/8 1 133333 A 8 15
  25. ;
  26. proc sql;
  27.     create table out as
  28.         select a.*, b.calculate_count
  29.             from raw a left join
  30.                  (select date, id, action,count(id) as count, sum(count) as calculate_count
  31.                     from raw
  32.                     group by date, id, action
  33.                     having count gt 1) b
  34.                 on a.date=b.date and a.id=b.id and a.action=b.action
  35.             order by date, time;
  36. quit;
复制代码
已有 3 人评分论坛币 学术水平 热心指数 收起 理由
benny10 + 1 + 1 谢谢前辈的帮助
crackman + 20 + 1 + 1 精彩帖子
soporaeternus + 1 + 1 好早......我也没看懂问题,我想大概就是这样吧

总评分: 论坛币 + 20  学术水平 + 3  热心指数 + 3   查看全部评分

板凳
benny10 发表于 2010-9-29 14:48:34
3# hopewell


不好意思,我可能没说清楚。我主要的意思是要将有相同日期、ID和行动的值全部加总起来,所以说在相同日期、ID和行动的观测值其总合皆相同(皆为其个别数量相加总),但若没有同日期、ID和行动的观测值的话(话句话说,当天只有本身一笔时),就不作相加的动作,故为missing。(当然一开始是没有总合这一项的,因为这是我最后想求得的结果)
也因为这样,我不知该如何进行,请各位前辈多多帮忙,谢谢!

报纸
soporaeternus 发表于 2010-9-29 15:10:45
我觉得3楼就是答案.......
Let them be hard, but never unjust

地板
benny10 发表于 2010-9-29 16:01:35
5# soporaeternus 但我一开始应该没有总合项耶!这是要自己求的,所以这应该不对吧!

7
soporaeternus 发表于 2010-9-29 16:13:10
calculate_count应该就是你要的结果字段,没有用一开始输入的sum
估计是照抄数据导致的......
多输入了一个字段,后面算法是对的......
Let them be hard, but never unjust

8
hopewell 发表于 2010-9-29 18:12:37
大哥耶,我服了您了,把您老的标准答案与计算结果放一起比较,是出于对您老的尊重好不,哎

9
benny10 发表于 2010-9-29 19:26:27
喔,原来是这样,谢谢前辈的帮助,来试试看!!

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

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