楼主: 薯一薯
11903 7

[问答] 如何实现只保留某个观测值的前几行 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
123 点
帖子
14
精华
0
在线时间
6 小时
注册时间
2015-12-7
最后登录
2017-11-22

楼主
薯一薯 发表于 2016-5-23 15:28:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教各位大神!!有个需求,已知有若干个账号,且每个账号每个月有N条消费记录,现在要提取每个账号,每个月交易的前五笔,请问这样的功能怎么实现?
二维码

扫码加我 拉你入群

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

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

关键词:如何实现 观测值 消费记录 如何

沙发
孤单的我们 发表于 2016-5-23 15:49:23
  1. data a;
  2.         input id$ date yymmdd10. amout;
  3.         format date yymmdd10.;
  4. cards;
  5. 01 2016-01-02 729
  6. 01 2016-01-03 208
  7. 01 2016-01-05 188
  8. 01 2016-01-05 569
  9. 01 2016-01-07 239
  10. 01 2016-01-09 123
  11. 01 2016-01-15 321
  12. 01 2016-01-21 520
  13. 01 2016-01-22 639
  14. 01 2016-01-26 183
  15. ;
  16. run;

  17. data b;
  18.         set a;
  19.         by id date;
  20.         if first.id then sum=1;
  21.                 else sum+1;
  22.         if sum<=5;
  23. run;
复制代码

藤椅
chenj89 发表于 2016-5-23 16:16:25
data test;                                                                                                                              
  set sashelp.cars;                                                                                                                     
  by make;                                                                                                                              
  if first.make then id=0;                                                                                                              
  id+1;                                                                                                                                 
  if id <=5;                                                                                                                           
run;

BY 语句可以按需求改一下, 比如 BY ID DATE; 在proc sort 里先排序, 在 data step.

板凳
薯一薯 发表于 2016-5-23 17:19:36
chenj89 发表于 2016-5-23 16:16
data test;                                                                                           ...
我按照您的方法试了,但是结果是一个客户只有五条记录了,我要的是一个客户一个月只有五条,所以如果有10个月的话,那一个客户就有50条记录这个意思,不知道应该怎么实现呢?

报纸
薯一薯 发表于 2016-5-24 09:14:50
顶起来!请高手帮忙!或是能实现给相同月份,相同账号的记录编号也可以,这样我就取指定编号也行。

地板
zqy458219593 发表于 2016-5-24 09:18:08
薯一薯 发表于 2016-5-24 09:14
顶起来!请高手帮忙!或是能实现给相同月份,相同账号的记录编号也可以,这样我就取指定编号也行。
是不是要  客户记录=记录月份x5?其实楼上两位都告诉你了啊,你只需要把你的分组变量(BY)选择好就可以了

7
薯一薯 发表于 2016-5-24 09:22:38
zqy458219593 发表于 2016-5-24 09:18
是不是要  客户记录=记录月份x5?
是的,一个客户一个月可能有100条记录,但我只取一个客户一个月的前5条,12个月就是12*5=60条,同理,有N个客户的话,那就取这N个客户,每个月5条,就是这个意思,相当于最后的结果就是:

month        acct        money
201501        a        100
201501        a        200
201501        a        300
201501        a        410
201501        a        500
201502        a        100
201502        a        200
201502        a        300
201502        a        410
201502        a        500
201501        b        100
201501        b        200
201501        b        300
201501        b        410
201501        b        500
201502        b        100
201502        b        200
201502        b        300
201502        b        410
201502        b        500

8
zqy458219593 发表于 2016-5-24 09:29:41
薯一薯 发表于 2016-5-24 09:22
是的,一个客户一个月可能有100条记录,但我只取一个客户一个月的前5条,12个月就是12*5=60条,同理,有N ...
楼上两位告诉的方法都是对的啊,,,你数据字段都不告诉我们,不知道你的数据结构是什么。你直接复制代码去试,肯定不对

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 08:26