当有 n 个连续的虚拟人时进行子集化
Subseting when there are n consecutive dummies
我有一个数据框,我创建了一系列虚拟变量,然后将它们组合到我的最后一列中。我想知道我是否遇到连续 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))
我有一个数据框,我创建了一系列虚拟变量,然后将它们组合到我的最后一列中。我想知道我是否遇到连续 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))