在R中从一个表中删除一个表

时间:2015-12-17 02:43:16

标签: r row data.table

我在R中有一个名为A的数据表,它有三列Col1,Col2和Col3。另一个名为B的表也具有相同的三列。我想删除表A中的所有行,其中对(Col1,Col2)存在于表B中。我尝试过,但我不知道如何执行此操作。最近几天我被困在这上面了。

谢谢,

3 个答案:

答案 0 :(得分:8)

library(data.table)
A = data.table(Col1 = 1:4, Col2 = 4:1, Col3 = letters[1:4])
#   Col1 Col2 Col3
#1:    1    4    a
#2:    2    3    b
#3:    3    2    c
#4:    4    1    d

B = data.table(Col1 = c(1,3,5), Col2 = c(4,2,1))
#   Col1 Col2
#1:    1    4
#2:    3    2
#3:    5    1

A[!B, on = c("Col1", "Col2")]
#   Col1 Col2 Col3
#1:    2    3    b
#2:    4    1    d

答案 1 :(得分:5)

我们可以使用anti_join

library(dplyr)
anti_join(A, B, by = c('Col1', 'Col2'))

答案 2 :(得分:3)

这是一个使用... FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .' NAD+BY+9312345123452' CTA+PD+0001:Terence Trent D?'Arby' ...

的广告
interaction

或者为每一行创建一个唯一的ID,然后排除合并后的那些:

A <- data.frame(Col1=1:3, Col2=2:4, Col3=10:12)
B <- data.frame(Col1=1:2, Col2=2:3, Col3=10:11)
A
#  Col1 Col2 Col3
#1    1    2   10
#2    2    3   11
#3    3    4   12

B
# Col1 Col2 Col3
#1    1    2   10
#2    2    3   11

byv <- c("Col1","Col2")
A[!(interaction(A[byv]) %in% interaction(B[byv])),]

#  Col1 Col2 Col3
#3    3    4   12