0

从两个大型数据帧中删除匹配 ID 的最可靠方法是什么?

例如,我有一个不想被联系的参与者列表(n=200)。我想从包含 100 多个变量和 200,000 个观察值的数据集中删除它们。

这是我需要从数据集中删除的 200 个参与者 ID 的列表。

exclude=read.csv("/home/Project/file/excludeids.csv", header=TRUE, sep=",") 
dataset.exclusion<- dataset[-which(exclude$ParticipantId %in% dataset$ParticipantId  ), ]  

这是要使用的正确命令吗?

我不认为这个命令正在做我想做的事,因为当我用以下内容进行验证时:length(which(dataset.exclusion$ParticipantId %in% exclusion$ParticipantId)) 我没有得到 0。

有什么见解吗?

4

2 回答 2

2

例如,您可以这样做:

sample1[!sample1$ParticipantID %in% 
            unique(exclusion$ParticipantId),]
于 2013-10-07T17:22:43.937 回答
1

像这样的东西?

library(data.table)

dataset <- data.table(
a = c(1,2,3,4,5,6),
b = c(11,12,13,14,15,16),
d = c(21,22,23,24,25,26)
)

setkeyv(dataset, c('a','b'))

ToExclude <- data.table(
a = c(1,2,3),
b = c(11,12,13)
)

dataset[!ToExclude]

#    a  b  d
# 1: 4 14 24
# 2: 5 15 25
# 3: 6 16 26
于 2013-10-07T16:49:42.487 回答