根据另一个data.table删除data.table中的行

Gab*_*iel 4 r data.table

我有一个data.table名字dtA:

我的实际dtA有62871932行和3列:

  date    company    value
198101          A        1
198101          A        2
198101          B        5
198102          A        2
198102          B        5
198102          B        6
Run Code Online (Sandbox Code Playgroud)

data.table dtB有一些我想要删除的列dtA,所以dtB就像规则:

实际dtB有19615280行和3列:

  date    company    value
198101          A        2
198102          B        5
Run Code Online (Sandbox Code Playgroud)

最终结果是:

  date    company    value
198101          A        1
198101          B        5
198102          A        2
198102          B        6
Run Code Online (Sandbox Code Playgroud)

它不是那么简单:

dtA=dtA[!(dtB$company %in% dtA$company)] 
Run Code Online (Sandbox Code Playgroud)

因为它还取决于日期和价值.

我尝试将两个表合并在一起,并将其链接到不在语句中:

dtA=dtA[dtB, on=date][!(company %in% comapny) & !(value %in% value)]
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

加入超过2 ^ 31行的结果(内部vecseq达到物理限制).很可能是错误的加入.

有任何想法吗?

rua*_*dhw 8

使用反连接:

dtA[!dtB, on=.(date, company, value)]
Run Code Online (Sandbox Code Playgroud)

这匹配使用列中dtA未找到的所有记录.dtBon