我以前是SAS用户,正在尝试使用tidyverse中的"filter“函数删除基于多个条件的案例,并且遇到了多个条件的交集问题。在我的reprex中,我正在尝试删除同时具有8个气缸和qsec 18及以上的汽车(mtcar数据集)。在mtcars数据集中,只有2辆汽车同时满足这两个条件(Merc 450SLC和Caddilac Fleetwood)。mtcars数据集中有32个观测值,因此解决方案应根据标准返回30个观测值。
我尝试过使用filter(cyl != 8,qsec < 18),但这会删除所有8个气缸汽车和所有qsecs 18及以上的汽车(导致只有5个观察值)。使用"&“会产生相同的结果。大量的谷歌搜索都没有得到解决方案,所以任何帮助都是非常感谢的。
#Reprex:
filterdata <- mtcars %>%
filter(qsec < 18 & cyl != 8)
谢谢,怀特
发布于 2020-12-30 11:08:55
这是您要删除的内容:
library(dplyr)
mtcars %>% filter(cyl == 8 & qsec >= 18)
因此,您可以取消该条件,以获得要保留的行。
mtcars %>% filter(!(cyl == 8 & qsec >= 18))
您尝试的方法需要OR (|)条件。
mtcars %>% filter(cyl != 8 | qsec < 18)
PS -只有一行包含qsec >= 18
。Caddilac Fleetwood
的qsec
为17.98。
发布于 2020-12-31 02:10:18
在base R
中,我们可以使用subset
subset(mtcars, !(cyl == 8 & qsec >= 18))
https://stackoverflow.com/questions/65501490
复制相似问题