我有一个数据框,并且创建了一系列虚拟变量,然后将它们组合到最后一列中。我想知道是否存在连续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
答案 0 :(得分:5)
软件包data.table
具有一个不错的功能,称为rleid
,它基于diff
不为0的情况创建组。使用它,您可以这样做,
library(tidyverse)
df %>%
group_by(grp = data.table::rleid(df$a)) %>%
filter(n() >= 3 & all(a == 1))