我有两个 R 表,每个表都有一个用户列表和一个与他们采取特定操作的时间相对应的时间戳。
其中第一个(df1
)两个表具有详尽的用户列表,并且用户将具有具有不同时间戳的多行。
第二 (df2
)将有一个更有限的用户列表,但用户将再次出现在表中,并具有不同的时间戳。
我想要做的是连接两个表并最终得到一个与用户匹配的表df1
最接近的时间戳df2
,只要时间戳在df2
发生了after中的一个df1
.
例如,如果我有两个表,例如:
df1 <- data.frame(c(1,1,2,3), as.POSIXct(c('2016-12-01 08:53:20', '2016-12-01 12:45:47', '2016-12-01 15:34:54', '2016-12-01 00:49:50')))
names(df1) <- c('user', 'time')
df2 <- data.frame(c(1,1,3), as.POSIXct(c('2016-12-01 07:11:01', '2016- 12-01 11:50:11', '2016-12-01 01:19:10')))
names(df2) <- c('user', 'time')
给我们:
> df1
user time
1 1 2016-12-01 08:53:20
2 1 2016-12-01 12:45:47
3 2 2016-12-01 15:34:54
4 3 2016-12-01 00:49:50
> df2
user time
1 1 2016-12-01 07:11:01
2 1 2016-12-01 11:50:11
3 3 2016-12-01 01:19:10
我希望得到的输出如下所示:
user time_1 time_2
1 2016-12-01 08:53:20 2016-12-01 11:50:11
1 2016-12-01 12:45:47 NA
2 2016-12-01 15:34:54 NA
3 2016-12-01 00:49:50 2016-12-01 01:19:10
我在让这个加入得以解决的过程中陷入了困境。作为复杂性的附加层,如果有一个参数控制时间窗口以允许匹配(即仅加入来自df2
如果它在X
分钟的df1
),但实际上这对于主要问题来说是次要的。