R: группировка по набору данных с условием, что все значения в определенном столбце в группе соответствуют некоторому требованию - PullRequest
0 голосов
/ 05 марта 2020

Получил такой набор данных, как:

A B
a x
a y
b z
b z
c x
c z

Теперь я бы хотел сгруппировать по A, так как значения в B в каждой группе содержат только «x» или «y». например, будет выбран только 'c'.

Любая простая функция для этого решения? Пожалуйста, помогите

1 Ответ

0 голосов
/ 05 марта 2020

Мы можем выбрать группы, где all значения: "x" или "y".

В базе R мы можем использовать ave с subset

unique(subset(df, ave(B %in% c('x', 'y'), A, FUN =  all), select = A))

#  A
#1 a
#8 d

или с dplyr:

library(dplyr)

df %>%
  group_by(A) %>%
  filter(all(B %in% c('x', 'y'))) %>%
  distinct(A)

данные

df <- data.frame(A = c('a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd'), 
                 B = c('x', 'x', 'y', 'z', 'z', 'x', 'z', 'x', 'x'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...