全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2830 5
2016-07-17
例如:银行持借记卡人的交易明细数据
card_no   tran_id   tran_dt                        tran_type  
1234567  1001      2016-07-07 18:02:30  查询      
1234567  1002      2016-07-08 09:22:15  支付
1234567  1003      2016-07-10 11:23:40  登录
1234567  1004      2016-07-11 15:12:30  支付
2222222  2221      2016-07-12 18:02:30  登录
2222222  2222      2016-07-14 09:22:15  支付
2222222  2223      2016-07-16 11:33:40  支付

想要得到的结果是: 计算每一个卡号下、每一笔交易对应的满足条件的指标。
比如 cnt_zhifu_2day  当前交易前2天支付的次数
       cnt_login_2day  当前交易前2天登录的次数

最终是这样的结果                                       
card_no   tran_id   tran_dt                        tran_type  cnt_zhifu_2day    cnt_login_2day
1234567  1001      2016-07-07 18:02:30  查询          0                         0            
1234567  1002      2016-07-08 09:22:15  支付          0                         0            
1234567  1003      2016-07-10 11:23:40  登录          1                         0            
1234567  1004      2016-07-11 15:12:30  支付          0                         1            
2222222  2221      2016-07-12 18:02:30  登录          0                         0            
2222222  2222      2016-07-14 09:22:15  支付          0                         1            
2222222  2223      2016-07-15 11:33:40  支付          1                         0   

上面举例中只有2张银行卡,现实中有上千万张卡,交易笔数上亿。

请大家帮忙看看怎么计算,谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-17 10:38:40
用lubridate包处理一下时间,然后再用dplyer包筛选一下就可以了:
我把时间改了一下:
如下图:
查询交易.png

代码如下:
复制代码
数据附件如下:
查询交易.rar
大小:(253 Bytes)

 马上下载

本附件包括:

  • 查询交易.csv


这里,只输出你的查询结果,因为你也说数据量比较大,只列出查询结果出来,如果你想看详细资料,可以再提取。
如果上述代码运行不流畅,建议你使用数据库查询。

二维码

扫码加我 拉你入群

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

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

2016-7-17 19:56:59
jiangbeilu 发表于 2016-7-17 10:38
用lubridate包处理一下时间,然后再用dplyer包筛选一下就可以了:
我把时间改了一下:
如下图:
逻辑没这么简单吧,感觉楼主的意思是滚动计算支付和登录天数,而不是仅仅计算截至今天为止两天内的支付和登录次数。
二维码

扫码加我 拉你入群

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

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

2016-7-17 20:38:59
马甲1号 发表于 2016-7-17 19:56
逻辑没这么简单吧,感觉楼主的意思是滚动计算支付和登录天数,而不是仅仅计算截至今天为止两天内的支付和 ...
先从基本的框架做起。不知道你说的滚动是什么,意思是可以提前n天,这个天数是可以变的,还是?
基本框架就在这里了,想计算提前多少天,或者从哪天开始算起,可以自己根据上述代码,进行调整,改成函数,设置参数,应该是可以满足这方面的要求的。
二维码

扫码加我 拉你入群

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

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

2016-7-17 21:29:00
做了一个纯sql的解法,没优化过,但愿有帮助。在postgres上面测试通过。
复制代码


结果:
card_no         tran_id         tran_dt         trans_type         tran_id         zf_cnt         dl_cnt
1234567         1001         2016-07-07 18:02:30         查询         1001                
1234567         1002         2016-07-08 09:22:15         支付         1002                
1234567         1003         2016-07-10 11:23:40         登录         1003         1        
1234567         1004         2016-07-11 15:12:30         支付         1004                 1
2222222         2221         2016-07-12 18:02:30         登录         2221                
2222222         2222         2016-07-14 09:22:15         支付         2222                 1
2222222         2223         2016-07-16 11:33:40         支付         2223         1        
二维码

扫码加我 拉你入群

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

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

2016-7-18 09:24:49
谢谢楼上的各位热心朋友。 感谢。

R的代码可能需要研究下。
SQL的代码之前想的和兄弟的差不多,只是如果衍生一两百个指标跑起来比较慢,但是容易理解。

再次感谢各位。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群