Сохраните строки в той же группе, если какой-либо проходной фильтр - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть фрейм данных:

 df <- data.frame(sample = c("R1", "R2", "R2", "R2", "R3", "R3"), event = c(1, 10, 10, 20, 3, 3), name = c('foo', 'bar', 'baz', 'baz', 'foo', 'baz'))

И я хочу выбрать строки, сгруппированные по sample и event, где любая из строк в этой группе имеет name == 'baz'.

Желаемый вывод:

  sample event name
2     R2    10  bar # another row in same sample, event group has name == 'baz' 
3     R2    10  baz
4     R2    20  baz
5     R3     3  foo # another row with same sample, event group has name == 'baz' 
6     R3     3  baz

Вот что я пытаюсь:

  df %>% 
    group_by(sample, event) %>% 
    filter(name == 'baz')

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете просто использовать any()!

df %>% 
  group_by(sample, event) %>%
  filter(any(name == "baz"))

# A tibble: 5 x 3
# Groups:   sample, event [3]
  sample event name 
  <fct>  <dbl> <fct>
1 R2        10 bar  
2 R2        10 baz  
3 R2        20 baz  
4 R3         3 foo  
5 R3         3 baz 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...