У меня есть датафрейм, содержащий values
и type
. Я хочу отфильтровать df
по:
- , содержащему только
types
, который содержит все значения в векторе - , сохраняя только указанные значения c на
type
.
Я могу выполнить это sh в двухэтапной фильтрации, но, похоже, она подвержена ошибкам. Может быть, потому что порядок filter(keep.val %in% vals)
и filter(vals %in% keep.val)
только в обратном порядке, но создает другой вывод?
Вот мои фиктивные данные:
keep.val = c(1,3)
d <- data.frame(type = rep(c("a", "b", "d"), each = 4),
vals = as.integer(c(1:4, 3:6, 1,3,4,5)))
Моя двойная фильтрация:
d %>%
group_by(type) %>%
filter(all(keep.val %in% vals)) %>% # need to get two filters: one to keep only group that have all values
filter(vals %in% keep.val) # second to keep only specific values
Мой желаемый вывод (теперь это правильно с двойной фильтрацией):
type vals
<fct> <int>
1 a 1
2 a 3
3 d 1
4 d 3
Мне было интересно, есть ли способ сделать filter
только один раз, и уточнить, где я фильтрую за что? В основном на будущее я оглядываюсь назад в коде:)