R 存在n个连续假人时的子集
我有一个数据框,我创建了一系列虚拟变量,然后将它们组合到最后一列中。我想知道我是否有一个连续3个1的情况,也就是说,在下面的示例中,有没有一种方法可以将数据帧子集,从而得到第3:5行R 存在n个连续假人时的子集,r,dplyr,subset,tibble,R,Dplyr,Subset,Tibble,我有一个数据框,我创建了一系列虚拟变量,然后将它们组合到最后一列中。我想知道我是否有一个连续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
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
df包data.table
有一个很好的函数,名为rleid
,它根据diff
不为0创建组。用它,你可以
library(tidyverse)
df %>%
group_by(grp = data.table::rleid(df$a)) %>%
filter(n() >= 3 & all(a == 1))
@索托斯。我想知道是否存在没有data.table的tidyverse解决方案。