当有n个连续的假人时进行分组

Dav*_*vid 2 r subset dplyr tibble

我有一个数据框,我创建了一系列虚拟变量,然后将它们组合成i final列.我想知道我是否有一个连续3个1的情况,即有没有办法在下面的例子中给出行3:5的数据帧的子集?

df <-  tibble(
      a= c(0, 0, 1, 1, 1, 0, 1, 1)
    )
df

# A tibble: 8 x 1
      a
  <dbl>
1     0
2     0
3     1
4     1
5     1
6     0
7     1
8     1
Run Code Online (Sandbox Code Playgroud)

Sot*_*tos 5

这个包data.table有一个很好的函数叫做rleid创建基于diff不为0的组.使用它,你可以这样做,

library(tidyverse)

df %>% 
 group_by(grp = data.table::rleid(df$a)) %>% 
 filter(n() >= 3 & all(a == 1))
Run Code Online (Sandbox Code Playgroud)