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

时间:2019-01-25 19:27:28

标签: r subset categorical-data

我有一个类别字段,我想通过“排除”多个值进行子集化。

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

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

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

subset(data, data$variable != Exclude_Prod)

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

我想排除这些多个值,然后对数据进行子集化。我要排除的原因是,与我要保留的值相比,该值较少。

3 个答案:

答案 0 :(得分:2)

尝试以下操作:用相关变量替换。 data3是数据集。

static

使用一些虚假数据: 使用library(dplyr) R

base

“缺点”是基数R保留了原始索引。 使用data3[!data3$Exclude_Prod%in%c("x1","x2"),]

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

答案 1 :(得分:0)

谢谢你,尼尔森。经过艰苦的搜索,获得帮助以及反复试验之后,我使用了tidyverse

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

答案 2 :(得分:0)

一种data.table方式:

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

请注意,为数据帧“ data”命名是个坏主意,因为data包中有一个名为utils的函数。