【问题标题】:R multiple condition filtering/deletingR多条件过滤/删除
【发布时间】:2020-12-30 03:00:45
【问题描述】:

我是前 SAS 用户,我正在尝试使用 tidyverse 中的“过滤器”功能删除基于多个条件的案例,并且遇到了多个条件交集的问题。在我的代表中,我试图删除同时具有 8 个气缸和 qsec 18 及以上的汽车(mtcars 数据集)。在 mtcars 数据集中,只有 2 辆汽车同时满足这两个条件(Merc 450SLC 和凯迪拉克 Fleetwood)。 mtcars 数据集中有 32 个观测值,因此解决方案应根据标准返回 30 个观测值。

我尝试过使用 filter(cyl != 8, qsec

#Reprex: 
filterdata <- mtcars %>%
   filter(qsec < 18 & cyl != 8)

谢谢, 威斯

【问题讨论】:

    标签: r filter dplyr


    【解决方案1】:

    这是您要删除的内容:

    library(dplyr)
    mtcars %>%  filter(cyl == 8 & qsec >= 18)
    

    所以你可以否定条件来获取你想要保留的行。

    mtcars %>%  filter(!(cyl == 8 & qsec >= 18))
    

    您尝试的方法需要 OR (|) 条件。

    mtcars %>%  filter(cyl != 8 | qsec < 18)
    

    PS - 只有一行有qsec &gt;= 18Caddilac Fleetwoodqsec 为 17.98。

    【讨论】:

    • 感谢 Ronak,这非常有效!我肯定会使用 filter(!()) 表达式来删除案例。最好的。
    【解决方案2】:

    base R,我们可以使用subset

    subset(mtcars, !(cyl == 8 & qsec >= 18))
    

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多