R dplyr 子集中的子集

subset within a subset in R dplyr

我需要删除子集中满足条件的几行。

例如,使用 iris 数据集,我想删除所有 Sepal.Width = 3.2 的行,但仅限于 setosa

我试过这个: filter(iris, !Species %in% "setosa" & !Sepal.Width==3.2) 但是他删除了所有包含 setosa 的行和包含 Sepal.Width==3.2 的所有行,而不是同时考虑这两个条件(即只删除 'setosa' 中条件的行并保留其余的

这是使用 dplyr 的一种方法:

iris %>% filter(!(Sepal.Width == 3.2 & Species == "setosa"))

或以 R 为基数:

iris[!(iris$Species == "setosa" & iris$Sepal.Width == 3.2), ]

最后但并非最不重要的一点是 subset:

subset(iris, !(Species == "setosa" & Sepal.Width == 3.2))

但我认为还有其他方法可以执行此类子集操作,例如,使用数据 table。