楼主: aileendeng
1232 2

[问答] 在线等!将同组,时间相隔30天以内的值剔除 [推广有奖]

  • 0关注
  • 0粉丝

大专生

61%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
349 点
帖子
32
精华
0
在线时间
33 小时
注册时间
2014-3-12
最后登录
2016-8-19

楼主
aileendeng 发表于 2014-6-12 17:40:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
deal  id  date                     
1      1   2013-07-16
2      1   2013-07-26
3      1   2013-08-20
4      1   2013-09-01
5      2   2010-01-01
6      2   2010-09-27

现在需要将这些数据中同组中相隔时间day<=30的样本值删除,只保留时间最早的一个样本。比如例子中,deal2与deal1差10天,所以将deal2删除,删除后,deal3与之前的deal1差30天以上所以保留。deal4与保留的deal3相差11天所以也删除。
最终想得到:

deal  id  date                     
1      1   2013-07-16
3      1   2013-08-20
5      2   2010-01-01
6      2   2010-09-27


不能分组直接下一行减上一行呢。。。求指导!

二维码

扫码加我 拉你入群

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

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

关键词:在线等 date Deal Day ATE 在线 样本

沙发
hello_fj 发表于 2014-6-12 19:29:43
  1. data test;
  2. input deal  id  date yymmdd10.;
  3. cards;
  4. 1 1 2013-07-16
  5. 2 1 2013-07-26
  6. 3 1 2013-08-20
  7. 4 1 2013-09-01
  8. 5 2 2010-01-01
  9. 6 2 2010-09-27
  10. ;
  11. run;

  12. proc sort data=test;
  13. by id date;
  14. run;

  15. data test1;
  16. set test;
  17. by id;
  18. retain temp;
  19. if first.id then temp=date;
  20. else do;
  21. if date-temp<=30 then delete;
  22. else temp=date;
  23. end;
  24. format date yymmdd10.;
  25. drop temp;
  26. run;
复制代码

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
aileendeng + 1 + 1 精彩帖子
愤怒的老鸟 + 5 + 5 + 5 热心帮助其他会员

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

公众号:SAS与量化投资

藤椅
aileendeng 发表于 2014-6-12 20:29:38
hello_fj 发表于 2014-6-12 19:29
多谢多谢!!没有想到用retain。

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

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