在第二个数据框的基础上查找一个数据框的最新行

问题描述

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

最终目的是查看每个入室盗窃事件在附近人员附近巡逻的情况,并在入室盗窃之后留守并巡逻更多。

因此,如果dfburg事件在上午9点8/22发生,我想从dfpolice提取 行,这是最接近的行之前和之后的8月22日上午9点。

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

这是dfpolice

enter image description here

这里是德堡

enter image description here

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

解决方法

我认为一种简单的方法是将表与dplyr::bind_rows()之类的东西组合在一起,然后创建一个before和after列来复制Police_id并从那里填充或填充。这将需要在每个表中都有一个匹配的datetime列,但这很容易。

# 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表以获取所需的任何信息,因为结果表是入室ID,入室日期和呼叫的警察ID。紧接在此之前和之后。