楼主: chenhaoxyq
1534 7

[问答] 如何条件求和,求高手指点,谢谢啦 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

70%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
29 点
帖子
4
精华
0
在线时间
0 小时
注册时间
2014-5-11
最后登录
2015-2-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有这样两个表,现在想按照ID来求amount的和,请问通过data步来实现的话,这个程序要怎么写?谢谢啦!在线等
0{$CBC%C@1885]{D)91[KID.png
QQ图片20140921115928.png
二维码

扫码加我 拉你入群

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

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

关键词:条件求和 高手指点 求高手 amount data步 如何

沙发
zhengbo8 发表于 2014-9-21 13:59:26 |只看作者 |坛友微信交流群
请提供数据集。回答问题还要自己敲数据。{:3_42:}

使用道具

藤椅
苹果叶 在职认证  发表于 2014-9-21 16:20:07 |只看作者 |坛友微信交流群
  1. data b;
  2.   set a;
  3.     by id;
  4.   if first.id then tot=amount;
  5.   else tot+amount;

  6.   if last.id;
  7. run;
复制代码

使用道具

板凳
chenhaoxyq 发表于 2014-9-22 09:17:41 |只看作者 |坛友微信交流群
zhengbo8 发表于 2014-9-21 13:59
请提供数据集。回答问题还要自己敲数据。
数据集是这样的
表B如下:
id        total        name
1        34000        a
2        22222        b
3        111111        c
4        345555        d
5        2333        e
6        3333        f
表A:
id        term        amount
1        1        100
1        2        123
2        1        146
2        2        169
2        3        192
3        1        215
3        2        238
4        1        261
4        2        284
5        1        307
6        1        330
6        2        353
6        3        376
5        2        399

使用道具

报纸
chenhaoxyq 发表于 2014-9-22 09:18:48 |只看作者 |坛友微信交流群
苹果叶 发表于 2014-9-21 16:20
好像不对哦,报错了,
ERROR: 在数据集 WORK.B 中没有正确排序 BY 变量。
id=6 term=3 amount=376 FIRST.id=0 LAST.id=0 tot=683 _ERROR_=1 _N_=13
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: 从数据集 WORK.B 读取了 14 个观测。
WARNING: 数据集 WORK.A 可能不完整。该步停止时,共有 5 个观测和 4 个变量。
WARNING: 数据集 WORK.A 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.17 秒
      CPU 时间         0.07 秒

使用道具

地板
chenhaoxyq 发表于 2014-9-22 09:29:59 |只看作者 |坛友微信交流群
苹果叶 发表于 2014-9-21 16:20
我把A表重新排了个序可以了,但又产生一个问题,B表原来的变量amount和name没有了,我想保留怎么办?
就是最后产生这样一个表:
ID  AMOUNT   NAME   TOT


另外能不能解释一下这段程序的原理,谢谢啦!

使用道具

7
firefox29 发表于 2014-9-22 23:11:07 |只看作者 |坛友微信交流群
chenhaoxyq 发表于 2014-9-22 09:29
我把A表重新排了个序可以了,但又产生一个问题,B表原来的变量amount和name没有了,我想保留怎么办?
...
你是不是要把数据集A按ID求和然后和数据集B 合并起来?

使用道具

8
Tigflanker 发表于 2014-9-23 10:32:55 |只看作者 |坛友微信交流群
  1. data x;
  2. input id term amount;
  3. cards;
  4. 1 1 100
  5. 1 2 123
  6. 2 1 146
  7. 2 2 169
  8. 2 3 192
  9. 3 1 215
  10. 3 2 238
  11. 4 1 261
  12. 4 2 284
  13. 5 1 307
  14. 6 1 330
  15. 6 2 353
  16. 6 3 376
  17. 5 2 399
  18. ;run;

  19. proc sql noprint;
  20.   create table a as
  21.     select *, sum(amount) as sum from x
  22.         group by id
  23. ;quit;
复制代码


兄弟,你貌似没说明白,只按照id来对amount,一个数据集不就够了?
暂先提供SQL做法,做sum当然SQL和Means是不二选择啊。

使用道具

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

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

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

GMT+8, 2024-4-19 21:25