我试图只返回匹配两个条件过滤器语句的行。 如果我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
您可以只扩展条件以指定它。
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