Я ищу более масштабируемые методы для создания индикаторных переменных на основе нескольких лагов. Ниже вы найдете воспроизводимый пример, показывающий желаемую новую переменную 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
Создано в 2018-08-28 пакетом Представ (v0.2.0.9000).