根据第二个数据框从一个数据框中查找最近的行

Find most recent rows from one dataframe based on a second dataframe

我有两个数据帧,dfburgdfpolice。对于 dfburg(入室盗窃列表)中的每一行,我想知道 dfpolice(警察活动列表)中的哪一行是最近的,以及之后发生的那一行。

最终目标是针对每起入室盗窃案,了解一名警员在该地区巡逻的距离有多近,以及在入室盗窃案发生后,他们是否留下来继续巡逻。

因此,如果 dfburg 事件发生在 8 月 22 日上午 9 点,我想从 中提取两个 dfpolice,最接近8/22早上9点的,前后都有。

谢谢。我有两个表的日期时间变量。

这里是 dfpolice

这里是 dfburg

所以对于dfburg中的每一行,会有两行dfpolice,前后最接近的行,会有重复。

我认为一个简单的方法是将 table 与 dplyr::bind_rows() 之类的东西结合起来,然后创建一个前后列来复制 police_id 和从那里向上或向下填充。这需要在每个 table 中有一个匹配的日期时间列,但这很容易。

# I took some liberties with column names, as I didn't see the tables before writing
dfpolice %>% 
  dplyr::bind_rows(dfburg) %>% 
  dplyr::arrange(dt) %>% 
  dplyr::select(burg_id, dt, police_id_before = police_id, police_id_after = police_id) %>% 
  tidyr::fill(police_id_before, .direction = 'down') %>% 
  tidyr::fill(police_id_after, .direction = 'up') %>% 
  dplyr::filter(complete.cases(.))

从那里您可以参考 dfpolicedfburg table 以获得您想要的任何信息,因为结果 table 是盗窃 ID、盗窃日期入室盗窃,以及之前和之后的电话的警察 ID。