基于多个滞后或基于前N行创建指标变量

时间:2018-08-28 12:21:41

标签: r dplyr

我正在寻找更具可扩展性的技术,以基于多次滞后创建指标变量。在下面,您将找到一个可复制的示例,其中显示了所需的新变量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。

0 个答案:

没有答案