Как удалить группы, если строки в указанной группе c не соответствуют возрастающей последовательности? - PullRequest
0 голосов
/ 02 апреля 2020

Мне было интересно, как отфильтровать группы, в которых строки не соответствуют полной восходящей последовательности:

Example

Animal    Count
Dog       4
Dog       5
Dog       6
Dog       7
Cat       11
Cat       13
Cat       14
Cat       15
Rat       9
Rat       10
Rat       11
Rat       12
Rat       14
Moose     17
Moose     18
Moose     19
Moose     20

Полученный кадр данных должен выглядеть следующим образом:

Animal    Count
Dog       4
Dog       5
Dog       6
Dog       7
Moose     17
Moose     18
Moose     19
Moose     20

Здесь все предыдущие значения строки на единицу больше, чем его предыдущее значение. Я пытался объединить условные операторы с пакетом dplyr, но мне это не удалось. Любая помощь будет оценена. Спасибо

1 Ответ

1 голос
/ 02 апреля 2020

Подход состоит в том, чтобы рассчитать разницу между последовательными строками в каждой группе и проверить, все ли они равны 1. Предполагая, что ваши данные находятся в df:

df %>%
  group_by(Animal) %>%
  filter(all(diff(Count) == 1))

#   Animal Count
#   <chr>  <dbl>
# 1 Dog        4
# 2 Dog        5
# 3 Dog        6
# 4 Dog        7
# 5 Moose     17
# 6 Moose     18
# 7 Moose     19
# 8 Moose     20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...