需要通过排除分类变量中的多个值来进行子集化

Need to subset by excluding multiple values in a categorical variable

我有一个分类字段,我想按 'excluding' 个多个值进行子集化。

最初,我以为我可以直接在代码中列出我想要的所有值,或者创建一个单独的列表并将其添加回代码中(见下文)。

subset(data, data$variable != c("x1", "x2", "x3"))

Exclude_Prod = c("x1", "x2", "x3")

subset(data, data$variable != Exclude_Prod)

我在一个字段中有多个值,这是一个分类变量。

我想排除这些多个值,然后对数据进行子集化。我之所以要排除是因为与我要保留的值相比,它们的值更少。

试试这个:替换为相关变量。 data3 是数据集。

library(dplyr)

使用一些假数据: 用 base R

data3[!data3$Exclude_Prod%in%c("x1","x2"),]

"disadvantage"是base R保留了原来的索引。 随着 dplyr

data3<-data.frame(Sales=c(11,12,13),Exclude_Prod = c("x1", "x2", "x3"))
data3 %>% 
  filter(!Exclude_Prod%in%c("x1","x2"))

结果:

 Sales Exclude_Prod
1    13           x3

原答案:

 mtcars %>% 
      mutate(ID=row.names(.)) %>% 
      select(ID) %>% 
      filter(!ID%in%c("Volvo 142E","Toyota Corona"))#eg Variable%in%c("x1", "x2", "x3)

谢谢你,尼尔森。经过艰苦的搜索、寻求帮助和反复试验后,我使用了 tidyverse:

data2 <- data1 %>%
  filter(variable != "x1" & variable != "x2")

一个data.table方式:

require(data.table)
setDT(data)[! variable %in% c("x1", "x2", "x3"), ]

请注意,将数据框命名为 "data" 不是个好主意,因为 utils 包中有一个名为 data 的函数。