在dplyr中筛选专门包含特定值组合的组

时间:2015-12-14 15:22:26

标签: r dplyr

给出如下表格:

  id value
1  1     a
2  2     a
3  2     b
4  2     c
5  3     c

我想过滤:

a)仅具有值a的id,即id 1。

b)包含a和b的id,即id 2。

数据:

data.frame(id = c(1,2,2,2,3), value = c("a", "a", "b", "c", "c"))

2 个答案:

答案 0 :(得分:9)

尝试

A)

df %>% group_by(id) %>% filter(all(value == "a"))

b)中

df %>% group_by(id) %>% filter(all(c("a", "b") %in% value))

答案 1 :(得分:0)

这是一种可用于a)和b)

的替代方法
df %>% group_by(id) %>% arrange(value) %>% summarize(value=paste(value,collapse="")) %>% filter(grepl("ab",value))

结果:

     id value
  (dbl) (chr)
1     2   abc

希望这有帮助