删除R中的数据行

时间:2013-10-07 16:37:45

标签: r dataframe duplicates

从大型两个大数据帧中删除匹配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。

有什么见解?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

sample1[!sample1$ParticipantID %in% 
            unique(exclusion$ParticipantId),]

答案 1 :(得分: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