根据大型列表从数据框中删除行

时间:2016-08-10 11:53:13

标签: r

我有一长串值,我想用它作为索引来从另一个数据框中删除行,该数据框在特定列包含此值。

一个简单的例子就是

X <- data.frame(Variable1=c(11,14,12,15),Variable2=c(2,3,1,4))
X[X$Variable1!=11 & X$Variable1!=12, ]

但是有没有有效的方法将数据框与我拥有的值一起使用,这是我想在第二个数据帧中使用的列表?

1 个答案:

答案 0 :(得分:1)

我们可以使用%in%根据多个值创建逻辑索引。

X[!(X$Variable1 %in% c(11, 12)),]

如果我们使用的是data.table,则选项setkey,然后否定值

library(data.table)
setDT(X, key = "Variable1")[!.(c(11,12))]
#     Variable1 Variable2
#1:        14         3
#2:        15         4

或者我们使用on作为@David Arenburg发表评论

setDT(X)[!.(11:12), on = "Variable1"]