筛选具有至少一个特定值的行 [英] Filter rows which has at least one of particular values

查看:49
本文介绍了筛选具有至少一个特定值的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的数据框.

I have a data frame like this.

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

我想获取三列 Tour Order Machine 包含至少一个 D 的行 E G .

I want to get the rows where the three columns Tour, Order Machine contains at least one D E or G.

结果应为:

    Tour    Order   Machine    Company
[1]    A        D         D          B
[3]    A        E         B          A
[5]    A        G         G          C

我的尝试:

df %>%
    filter(any(c(Tour, Order, Machine) %in% c('D', 'E', 'G')))

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

But it doesn't filter correctly(all the rows are returned). Could anybody please help me?

推荐答案

另一个选项:

df[rowSums(sapply(df[-4], '%in%', c('D', 'E', 'G'))) > 0,]

结果:

  Tour Order Machine Company
1    A     D       D       B
3    A     E       B       A
5    A     G       G       C

使用 dplyr ,您应该添加 rowwise():

df %>%
  rowwise() %>% 
  filter(any(c(Tour, Order, Machine) %in% c('D', 'E', 'G')))

这篇关于筛选具有至少一个特定值的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆