合并两个在R中具有间隔时间条件的数据集(我想避免组合,只是具有唯一的匹配项)

问题描述 投票:0回答:1

我有两个单独的数据集: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)
r datatable dplyr lubridate
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.