如何使用多个排除对数据集进行子集化?

时间:2012-05-11 19:14:16

标签: r

如何在单个向量中组合所有状态名称,而不是单独列出所有逻辑排除项?我发现CRAN网站上的函数%notin%,但R不承认是合法函数。

indata <- indata[which(indata$STATE != "GU" & indata$STATE != "WY" &
                       indata$STATE != "KS" & indata$STATE != "ME" &
                       indata$STATE != "MT" & indata$STATE != "ND" &), ]

感谢。

2 个答案:

答案 0 :(得分:5)

indata[!indata$STATE %in% c("GU", "WY", "KS", "ME", "MT", "ND"), ]
编辑:@CarlWitthoft,不管你信不信,我实际上已经有一段时间在私人包中了

`%notin%` <- function (x, table) x[!x %in% table]

然而,直到我已经把它输出很长时间之后,我才会想到要使用它。另外,使用它可以减少我的代码分发。我不知道

operators:::`%!in%`

只是%notin%

的后半部分

答案 1 :(得分:3)

再试一次:

library(operators) 

x%!in%y  

#works fine