我有一个类别字段,我想通过“排除”多个值进行子集化。
最初,我以为我可以直接在代码中列出所有想要的值,或者创建一个单独的列表,然后将其重新添加到代码中(请参见下文)。
subset(data, data$variable != c("x1", "x2", "x3"))
或
Exclude_Prod = c("x1", "x2", "x3)
subset(data, data$variable != Exclude_Prod)
我在一个字段中有多个值,这是一个分类变量。
我想排除这些多个值,然后对数据进行子集化。我要排除的原因是,与我要保留的值相比,该值较少。
答案 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
的函数。