У меня есть фрейм данных с идентификаторами, датами входа, событиями (X1.0 и X1.1) и датами, соответствующими времени событий (X2.0 и X2.1). Мне нужно найти идентификаторы людей, у которых было определенное c событие до даты входа.
library(dplyr)
df <- data.frame(ID = as.integer(c(10001, 10002, 10004, 10005, 10006)),
entry_date = as.Date(c("2013-12-22", "2013-02-13", "2013-03-13", "2013-01-01", "2013-02-02")),
X1.0 = as.integer(c(150, NA, 120, NA, 150)),
X1.1 = as.integer(c(120, 180, NA, 150, 120)),
X2.0 = as.Date(c("2017-02-13", NA, "2014-06-04", NA, "1990-03-08")),
X2.1 = as.Date(c("2003-12-22", "2011-02-13", NA, "1998-01-01", "2015-02-01")))
#filtering columns that begin with X1 by event 150
> dplyr::filter_at(df, vars(starts_with("X1")), any_vars(. == 150))
ID entry_date X1.0 X1.1 X2.0 X2.1
1 10001 2013-12-22 150 120 2017-02-13 2003-12-22
2 10005 2013-01-01 NA 150 <NA> 1998-01-01
3 10006 2013-02-02 150 120 1990-03-08 2015-02-01
Моя проблема заключается в условной фильтрации дат, потому что меня интересует только фильтрация "150" событий, которые произошли до даты входа, и есть другие события, присутствующие. Конечный результат должен выглядеть так:
ID entry_date X1.0 X1.1 X2.0 X2.1
1 10005 2013-01-01 NA 150 <NA> 1998-01-01
2 10006 2013-02-02 150 120 1990-03-08 2015-02-01