У меня есть два кадра данных: df1 и df2 (см. Пример ниже).df1 содержит числовое начальное и конечное значение для каждого идентификатора символа.df2 содержит несколько событий на один символьный идентификатор, включая числовое значение времени.
library(dplyr)
df1 <- data_frame(id = c("A", "B"),
start = c(2, 3),
end = c(5, 9))
df2 <- data_frame(id = c(rep("A", 4), rep("B", 4)),
time = c(1, 3, 5, 8, 2, 3, 4, 10),
keep = c(FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE))
Я пытаюсь отфильтровать события в df2 с помощью dplyr на основе значения времени, равного или равного между начальным и конечным значениями дляидентификатор в df1.Таким образом, фильтр имеет вид «df2 $ time> = df1 $ start & df2 $ time <= df1 $ end», который должен выполняться для каждого идентификатора отдельно.Я добавил логический столбец «keep», чтобы показать, какие строки я хочу сохранить в df2. </p>
Как мне выполнить этот фильтр для каждого идентификатора?Предпочтительно с помощью dplyr.Это должно быть конечным результатом:
df2 %>%
filter(keep == TRUE)
Любая помощь очень ценится!