为什么 filter() 不能过滤掉不等于某些字符的多行?

Why won't filter() work for filtering out multiple rows that don't equal certain characters?

我正在尝试过滤一栏中未知是否被占用的燕窝盒。对于这些未知数,语法是“未监控”或“更换盒子,为下一季做好准备!”之类的东西。我想摆脱。所以我正在尝试过滤一个新的日期框架,以包含不等于 (!=) 这些未知数的所有内容。

当我只为一个未知数编写代码时,它会让我过滤掉这些未知数之一,但它不会让我使用或参数“|”在一行代码中添加其他人。它只是不过滤任何东西。它也不给我一个错误。

示例:

library(dplyr)

szb5 <- filter(szb4, nests_2021 != "Not Monitored") #this works and filters correctly

szb5 <- filter(szb4, nests_2020 != "Replaced box, ready for next year!" | nests_2020 != "Old location, not monitored", nests_2020 != "Not monitored") #this doesn't filter anything

新的“szb5”数据框中的行没有变化。

这里的错误只是在您的逻辑中:通过允许所有不是 A 不是 B 的所有内容,您可以确保保留所有项目。这是因为任何属于 A 的东西都不是 B,所以它被保留,而任何属于 B 的东西不是 A,所以它也被保留。处理这个问题的更好方法是创建一个向量,例如 exclusions,包含 nests_2020 的所有值(请注意,您从 nests_2021 切换到 nests_2020问题)你想排除,然后使用类似 filter(szb4, !(nests_2020 %in% exclusions)).