楼主: littleduck23
1894 8

同一列内分组求和 [推广有奖]

  • 0关注
  • 0粉丝

初中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
211 点
帖子
18
精华
0
在线时间
14 小时
注册时间
2011-8-25
最后登录
2016-1-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据结构如下:

DATA test;
        input id date mmddyy10. sales;
        datalines;
        1        01/01/2014        1
        1        01/09/2014        3
        1        01/10/2014        2
        1        01/15/2014        1
        2        01/02/2014        2
        2        01/03/2014        1
        2        01/16/2014        4
        ;
run;


生成新两个新的变量,分别为同一个ID前后三天的sales求和,如果前后三天中某一天没有记录,则默认sales为0。问题是数据中sales记录日期是不连续的。 求问该如何实现?

提前谢过~~~
二维码

扫码加我 拉你入群

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

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

关键词:sales Lines Input sale Data 记录 如何

回帖推荐

teqel 发表于6楼  查看完整内容

沙发
teqel 发表于 2015-9-26 01:15:37 |只看作者 |坛友微信交流群
很多次看到这种求一个平滑平均的问题了。最好使用SQL自己JOIN自己

使用道具

藤椅
littleduck23 发表于 2015-9-26 02:11:16 |只看作者 |坛友微信交流群
teqel 发表于 2015-9-26 01:15
很多次看到这种求一个平滑平均的问题了。最好使用SQL自己JOIN自己
多谢回复!移动求平均我知道用lag可以实现,问题是前后一行相差超过三天以上的话,就不能直接加起来,而取0,这一点该如何实现呢?

使用道具

板凳
teqel 发表于 2015-9-26 05:45:21 来自手机 |只看作者 |坛友微信交流群
LAG不行,因为数据的顺序不是你时间的顺序

使用道具

报纸
littleduck23 发表于 2015-9-26 06:08:21 |只看作者 |坛友微信交流群
teqel 发表于 2015-9-26 05:45
LAG不行,因为数据的顺序不是你时间的顺序
那该怎么办呢?能麻烦你说的具体点儿吗?多谢啦~

使用道具

地板
teqel 发表于 2015-10-1 10:53:25 |只看作者 |坛友微信交流群
  1. DATA test;
  2.         input id date: mmddyy10. sales;
  3.                 format date mmddyy10.;
  4.         datalines;
  5.         1        01/01/2014        1
  6.         1        01/09/2014        3
  7.         1        01/10/2014        2
  8.         1        01/15/2014        1
  9.         2        01/02/2014        2
  10.         2        01/03/2014        1
  11.         2        01/16/2014        4
  12.         ;
  13. run;

  14. proc sql;
  15. create table test1 as
  16. select distinct A.*, sum(B.sales) as sales_sum
  17. from test as A left join test as B
  18. on a.date-3<=b.date<=a.date+3 and A.id=B.id
  19. group by A.id, A.Date
  20. order by 1, 2;
  21. quit;
复制代码

使用道具

7
pangchaoran 在职认证  发表于 2015-10-1 12:56:47 来自手机 |只看作者 |坛友微信交流群
楼上的可以加上having count(distinct b.date)>2 来排除掉有缺失的
还有,我觉得楼主是要正负一天的吧?

使用道具

8
littleduck23 发表于 2015-10-6 03:49:34 |只看作者 |坛友微信交流群
teqel 发表于 2015-10-1 10:53
非常感谢!

使用道具

9
littleduck23 发表于 2015-10-6 03:50:46 |只看作者 |坛友微信交流群
pangchaoran 发表于 2015-10-1 12:56
楼上的可以加上having count(distinct b.date)>2 来排除掉有缺失的
还有,我觉得楼主是要正负一天的吧?
是要前三天和后三天分别求和。问题解决了,多谢帮助~

使用道具

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

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

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

GMT+8, 2024-9-20 04:32