我有如下数据:
library(dplyr)
ex <- data.frame(bool = c(rep(FALSE, 2), rep(TRUE, 3), rep(FALSE, 2), rep(TRUE, 5),
FALSE, FALSE, rep(TRUE, 6), FALSE, FALSE, FALSE)) %>%
mutate(seq = data.table::rleid(bool)) %>%
group_by(seq) %>%
mutate(n = n()) %>%
ungroup() %>%
mutate(expected_output = c(4, 4, NA, NA, NA, 4, 4, rep(NA,5), 4, 4, rep(NA, 6), rep(6, 3)))
对于每一个FALSE
我需要找到TRUE
长度至少为4
. 但是如果之前没有这样的序列(比如 rows1:2
或6:7
),我们应该向前检查,即找到观察后出现的第一个长度为 4 或更大的序列。
的最后一列ex
包含预期输出。我怎么能做到这一点(最好是tidyverse
)?
编辑
tidyverse
仍然非常感谢使用的解决方案。