根据第二个数据框从一个数据框中查找最近的行
Find most recent rows from one dataframe based on a second dataframe
我有两个数据帧,dfburg
和 dfpolice
。对于 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(.))
从那里您可以参考 dfpolice
和 dfburg
table 以获得您想要的任何信息,因为结果 table 是盗窃 ID、盗窃日期入室盗窃,以及之前和之后的电话的警察 ID。
我有两个数据帧,dfburg
和 dfpolice
。对于 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(.))
从那里您可以参考 dfpolice
和 dfburg
table 以获得您想要的任何信息,因为结果 table 是盗窃 ID、盗窃日期入室盗窃,以及之前和之后的电话的警察 ID。