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

xxx*_*xxx 5 r dplyr

给出如下表:

  id value
1  1     a
2  2     a
3  2     b
4  2     c
5  3     c
Run Code Online (Sandbox Code Playgroud)

我想过滤:

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"))
Run Code Online (Sandbox Code Playgroud)

tal*_*lat 10

尝试

一个)

df %>% group_by(id) %>% filter(all(value == "a"))
Run Code Online (Sandbox Code Playgroud)

b)

df %>% group_by(id) %>% filter(all(c("a", "b") %in% value))
Run Code Online (Sandbox Code Playgroud)

  • 对于(b)你可以使用`df%>%group_by(id)%>%filter(any(value =="a")&any(value =="b"))` (2认同)