Подразделение, когда есть n последовательных манекенов - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть фрейм данных, и я создал серию фиктивных переменных, а затем объединил их в последний столбец.Я хочу знать, есть ли у меня случай, когда есть 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

1 Ответ

0 голосов
/ 15 февраля 2019

Пакет data.table имеет замечательную функцию rleid, которая создает группы на основе diff, не равной 0. Используя это, вы можете сделать,

library(tidyverse)

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