У меня есть две таблицы данных - 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
отсутствует в выходных данных. Почему это происходит? Есть ли способ выполнить скользящее объединение по времени, а также по идентификатору и как удерживать клавишу 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