【发布时间】:2019-03-16 20:14:01
【问题描述】:
我有两个数据表 - xtab 和 ytab。
> xtab
id created_at updated_at
1: 95473 2019-02-01 03:36:34 2019-02-01 03:52:44
2: 95473 2019-02-07 23:35:46 2019-02-07 23:59:13
3: 95473 2019-02-09 00:05:43 2019-02-09 00:24:59
4: 95473 2019-02-13 02:21:15 2019-02-13 02:49:24
5: 95473 2019-02-13 23:48:55 2019-02-14 00:17:32
6: 4268 2019-02-15 15:59:01 2019-02-15 16:21:07
7: 28780 2019-02-23 19:52:06 2019-02-23 20:05:06
8: 27685 2019-02-24 02:00:58 2019-02-24 02:12:05
9: 55837 2019-02-26 17:36:16 2019-02-26 17:50:17
10: 95473 2019-02-28 00:02:51 2019-02-28 00:25:44
> ytab
row_id user_id timeA timeB
1: 14E85AF4-6CA4-483B-B972-40C37FDB4B28 95473 2019-02-01 03:52:43 2019-02-01 03:36:31
2: A325F4FB-B5F6-4BAF-AFA3-F5D43EC4190F 95473 2019-02-07 23:59:12 2019-02-07 23:35:43
3: DF54F75D-5EC3-4505-89DD-1C669AEE2504 95473 2019-02-09 00:24:58 2019-02-09 00:05:40
4: 2E4FCB46-8564-4BB3-8A32-AE61F72615F4 95473 2019-02-13 02:49:23 2019-02-13 02:12:34
5: 67852185-DF3F-4916-BAD3-4B8EEB6397E3 95473 2019-02-14 00:16:53 2019-02-13 23:48:52
6: A2C0B283-4D26-4FA1-8A64-76E31F603828 4268 2019-02-15 16:21:06 2019-02-15 15:58:58
7: 0249A8DF-9FA9-49B7-B604-0F37B4031A56 28780 2019-02-23 20:05:05 2019-02-23 19:52:01
8: 4F29038B-8A7E-4038-B18A-AAE7BEE32212 27685 2019-02-24 02:12:04 2019-02-24 02:00:54
9: DCDB7020-65DB-4067-94F5-ED2E36255458 55837 2019-02-26 17:50:16 2019-02-26 17:36:12
10: 64BA0A31-3DF2-4819-A2F7-BF732DD0587E 95473 2019-02-28 00:25:43 2019-02-28 00:02:48
我的目标是对两个单独的变量执行连接 - 首先,xtab$id = ytab$user_id 和 xtab$updated_at 和 ytab$timeA 之间最近时间的滚动连接
以下代码有效,但有两个问题 - 首先,它只是基于时间的连接,其次,输出中缺少键 timeA。为什么会这样?有没有办法按时执行滚动连接以及 ID 以及如何在输出中保留 ytab 键?
library(data.table)
setDT(xtab)
setDT(ytab)
setkey(xtab, updated_at)
setkey(ytab, timeA)
xtab[ytab, roll = 'nearest']
id created_at updated_at row_id user_id timeB
1: 95473 2019-02-01 03:36:34 2019-02-01 03:52:43 14E85AF4-6CA4-483B-B972-40C37FDB4B28 95473 2019-02-01 03:36:31
2: 95473 2019-02-07 23:35:46 2019-02-07 23:59:12 A325F4FB-B5F6-4BAF-AFA3-F5D43EC4190F 95473 2019-02-07 23:35:43
3: 95473 2019-02-09 00:05:43 2019-02-09 00:24:58 DF54F75D-5EC3-4505-89DD-1C669AEE2504 95473 2019-02-09 00:05:40
4: 95473 2019-02-13 02:21:15 2019-02-13 02:49:23 2E4FCB46-8564-4BB3-8A32-AE61F72615F4 95473 2019-02-13 02:12:34
5: 95473 2019-02-13 23:48:55 2019-02-14 00:16:53 67852185-DF3F-4916-BAD3-4B8EEB6397E3 95473 2019-02-13 23:48:52
6: 4268 2019-02-15 15:59:01 2019-02-15 16:21:06 A2C0B283-4D26-4FA1-8A64-76E31F603828 4268 2019-02-15 15:58:58
7: 28780 2019-02-23 19:52:06 2019-02-23 20:05:05 0249A8DF-9FA9-49B7-B604-0F37B4031A56 28780 2019-02-23 19:52:01
8: 27685 2019-02-24 02:00:58 2019-02-24 02:12:04 4F29038B-8A7E-4038-B18A-AAE7BEE32212 27685 2019-02-24 02:00:54
9: 55837 2019-02-26 17:36:16 2019-02-26 17:50:16 DCDB7020-65DB-4067-94F5-ED2E36255458 55837 2019-02-26 17:36:12
10: 95473 2019-02-28 00:02:51 2019-02-28 00:25:43 64BA0A31-3DF2-4819-A2F7-BF732DD0587E 95473 2019-02-28 00:02:48
【问题讨论】:
标签: r join dplyr data.table