我有两个数据框来自同一网站的两个独立分析源。我希望将第一个(df1)中的事件与来自第二个(df2)的事件的时间签名进行匹配。 df1中的大多数事件在df2中都没有相应的事件。
因此,如果df2在30秒内存在时间匹配,我希望能够过滤df1中的事件。
df1 <- read.csv(text = "start_time, visit_duration
2017-08-13 12:13:53,22
2017-08-13 15:41:44,10
2017-08-13 16:03:45,11
2017-08-13 16:39:03,05")
df1$start_time = strptime(df1$start_time, "%Y-%m-%d %H:%M:%S")
df2 <- read.csv(text = "timestamp
2017-08-13 12:11:53
2017-08-13 15:44:50
2017-08-13 16:03:59
2017-08-13 16:39:30")
df2$timestamp = strptime(df2$timestamp, "%Y-%m-%d %H:%M:%S")
第3和第4项活动应该有2场比赛。
答案 0 :(得分:2)
您可以使用outer
获取difftime
并应用30秒的要求,即
which(abs(outer(df1$start_time, df2$timestamp, `difftime`)) <= 30, arr.ind = T)[,1]
#[1] 3 4