我有两个单独的数据集:df1和df2。我想创建一个新的数据集df3,如果日期时间在20秒之内,它将与df1的endtime列与df2的send列匹配。
df1
endtime ID
1/7/2020 1:35:08 AM A
1/7/2020 1:39:00 AM B
1/20/2020 1:45:00 AM C
df2
sent ID
1/7/2020 1:35:20 AM E
1/7/2020 1:42:00 AM F
1/20/2020 1:55:00 AM G
1/20/2020 2:00:00 AM E
这是df3的理想输出。只有一行,因为只有两个值与结束时间和已发送列相差20秒以内的条件相匹配。我想要独特的比赛,而不是组合。本质上是与时间条件合并。
endtime sent
1/7/2020 1:35:08 AM 1/7/2020 1:35:20 AM
这里是投诉:
df1
structure(list(endtime = structure(c(2L, 3L, 1L), .Label = c("1/10/2020 1:45:00 AM",
"1/7/2020 1:35:08 AM", "1/7/2020 1:39:00 AM"), class = "factor"),
ID = structure(1:3, .Label = c("A", "B", "C"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))
df2
structure(list(sent = structure(c(3L, 4L, 1L, 2L), .Label = c("1/20/2020 1:55:00 AM",
"1/20/2020 2:00:00 AM", "1/7/2020 1:35:20 AM", "1/7/2020 1:42:00 AM"
), class = "factor"), ID = structure(c(1L, 2L, 3L, 1L), .Label = c("E",
"F", "G"), class = "factor")), class = "data.frame", row.names = c(NA,
-4L))
这是我尝试过的:
我正在考虑执行左联接并匹配值,或者我可以使用merge(),但棘手的部分是将条件值与条件语句匹配。任何建议表示赞赏。
library(dplyr)
left_join(df1, df2)