我正在寻找更具可扩展性的技术,以基于多次滞后创建指标变量。在下面,您将找到一个可复制的示例,其中显示了所需的新变量in_prev_3
-这意味着在前三个记录/行中至少找到一个TRUE
。虽然这样做有效,但无法很好地缩放到较大的N值(例如15、30、45等),也不灵活。
library(tidyverse)
set.seed(4)
df <- data_frame(
id = 1:20,
bool = as.logical(rbinom(20, 1, 0.2))
)
df %>%
mutate(last_3 = lag(bool, 3) + lag(bool, 2) + lag(bool, 1),
in_prev_3 = last_3 > 0)
#> # A tibble: 20 x 4
#> id bool last_3 in_prev_3
#> <int> <lgl> <int> <lgl>
#> 1 1 FALSE NA NA
#> 2 2 FALSE NA NA
#> 3 3 FALSE NA NA
#> 4 4 FALSE 0 FALSE
#> 5 5 TRUE 0 FALSE
#> 6 6 FALSE 1 TRUE
#> 7 7 FALSE 1 TRUE
#> 8 8 TRUE 1 TRUE
#> 9 9 TRUE 1 TRUE
#> 10 10 FALSE 2 TRUE
#> 11 11 FALSE 2 TRUE
#> 12 12 FALSE 1 TRUE
#> 13 13 FALSE 0 FALSE
#> 14 14 TRUE 0 FALSE
#> 15 15 FALSE 1 TRUE
#> 16 16 FALSE 1 TRUE
#> 17 17 TRUE 1 TRUE
#> 18 18 FALSE 1 TRUE
#> 19 19 TRUE 1 TRUE
#> 20 20 FALSE 2 TRUE
由reprex package(v0.2.0.9000)创建于2018-08-28。