仅返回与两个条件过滤器匹配的值,其中name列可以多次使用

问题描述 投票:0回答:1

我试图只返回匹配两个条件过滤器语句的行。 如果我group_by名称并且名称在多行中使用,我将获得具有该名称的每一行。

name <- c("Jeff", "Jeff", "Jeff", "Jeff", "Jill", "Jill", "Jill", "Jill", "Angie", "Angie", "Angie")

total <- c(123, 234, 432, 321,  345, 456, 654, 543, 567, 678, 789)

code <- c("abc", "xyz", "lmn", "opq", "abc", "xyz", "txy", "jkl",  "xyz", "tup", "rst")

table <- data.frame(name, total, code)   

我的表是:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jeff  432   lmn
Jeff  321   opq
Jill  345   abc
Jill  456   xyz
Jill  654   txy
Jill  543   jkl
Angie 567   xyz
Angie 678   tup
Angie 789   rst

如果我运行此代码:

library(dplyr)  
test1 <- table %>% group_by(name) %>% 
                   filter("abc" %in% code & "xyz" %in% code)   

这给了我:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jeff  432   lmn
Jeff  321   opq
Jill  345   abc
Jill  456   xyz
Jill  654   txy
Jill  543   jkl

我认为问题是group_by(名称),但如果我没有group_by(名称),我不能在同一列上使用&语句进行过滤。 我想输出:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jill  345   abc
Jill  456   xyz
r dplyr
1个回答
0
投票

您可以只扩展条件以指定它。

table %>% group_by(name) %>% 
  filter("abc" %in% code & "xyz" %in% code & (code == "abc" | code == "xyz"))

# A tibble: 4 x 3
# Groups:   name [2]
  name  total code 
  <fct> <dbl> <fct>
1 Jeff    123 abc  
2 Jeff    234 xyz  
3 Jill    345 abc  
4 Jill    456 xyz  
© www.soinside.com 2019 - 2024. All rights reserved.