Условная фильтрация по сгруппированной переменной, основанная на длине строки группы - PullRequest
0 голосов
/ 19 февраля 2019

Простой запрос, который я не могу понять:

Пример набора данных:

   ACH_DATE   CODE
1 31OCT2018 A81001
2 31JAN2019 A81001
3 31OCT2018 A81002
4 31JAN2019 A81002
5 31OCT2018 A81003
6 31JAN2019 A81004

Я хочу group_by в переменной CODE и отфильтроватьACH_DATE, при этом если в группе более одной строки, удалите строку, где ACH_DATE == "31OCT2018".

Пример данных:

df <- structure(list(ACH_DATE = c("31OCT2018", "31JAN2019", "31OCT2018", 
"31JAN2019", "31OCT2018", "31JAN2019"), CODE = c("A81001", "A81001", 
"A81002", "A81002", "A81003", "A81004")), row.names = c(NA, 6L
), class = "data.frame")

1 Ответ

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

Мы группируем по 'CODE', создаем логический вектор с количеством строк и 'ACH_DATE'

library(dplyr)
df %>%
  group_by(CODE) %>% 
  filter((n() > 1 &  ACH_DATE != "31OCT2018") | n() == 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...