我有一个数据框,并且创建了一系列虚拟变量,然后将它们组合到最后一列中。我想知道是否存在连续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

最佳答案

软件包data.table具有一个名为rleid的不错的函数,该函数基于diff不为0来创建组。

library(tidyverse)

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

09-10 01:56
查看更多