R:过滤具有至少一个特定值的行

Mak*_*aki 2 r filter any conditional-statements dataframe

在R中,我有一个这样的数据框.

df
    Tour    Order   Machine    Company
[1]    A        D         D          B
[2]    B        B         A          G
[3]    A        E         B          A
[4]    C        B         C          B
[5]    A        G         G          C
Run Code Online (Sandbox Code Playgroud)

我想得到三列的行Tour,Order Machine包含至少一个D EG.

结果应该是:

    Tour    Order   Machine    Company
[1]    A        D         D          B
[3]    A        E         B          A
[5]    A        G         G          C
Run Code Online (Sandbox Code Playgroud)

我的尝试:

df %>%
    filter(any(c(Tour, Order, Machine) %in% c('D', 'E', 'G')))
Run Code Online (Sandbox Code Playgroud)

但它没有正确过滤(返回所有行).有人可以帮帮我吗?

Mau*_*ers 6

另一种tidyverse方法使用filter_at

df %>% filter_at(vars(-Company), any_vars(. %in% c("D", "E", "G")))
#  Tour Order Machine Company
#1    A     D       D       B
#2    A     E       B       A
#3    A     G       G       C
Run Code Online (Sandbox Code Playgroud)