【发布时间】:2022-02-09 00:57:33
【问题描述】:
我有两个数据框,其中包含同一个人的不同数据。数据框 1 (dfx) 具有唯一的 ID 和人们进行约会的日期,而数据框 2 具有唯一的 ID 以及开始和结束日期。
如下所示:
c1 <- c("1", "1", "1", "1", "1", "2", "2", "2", "2", "2")
d1 <- c("2017", "2018", "2019", "2020", "2021", "2019", "2019", "2019", "2020", "2021")
dfx <- data.frame(c1,d1)
c2 <- c("1", "1", "2")
ds <- c("2017", "2020", "2017")
de <- c("2018", "2021", "2018")
dfy <- data.frame(c2,ds,de)
我正在使用数据框 2,我想知道数据框 1 中的日期是否在数据框 2 中的开始日期和结束日期之内。我试图在 dfy 中得到一个输出,说 TRUE 或 FALSE 表示重叠。
对于本例,输出应返回 TRUE、TRUE、FALSE。
我已经尝试在 dplyr 上使用它,但没有得到我正在寻找的结果。我会很感激任何帮助。谢谢。
dplyr 代码:
overlap <- dfy %>%
group_by(c2) %>%
mutate (on_hold = any(mapply(function(id, start, end) any(id == dfx$c1 & dfx$d1 > start & dfx$d1 < end), c2, ds, de))) %>%
arrange(c2, ds, de, on_hold)
【问题讨论】:
标签: r date if-statement dplyr