合并两个data.tables但不更新特定列

时间:2015-12-17 22:27:09

标签: r merge data.table

我有一个data.table问题,我不确定这是否需要两个单独的操作。我有两个data.tables我想通过特定的列合并。但是,如果键之间存在匹配,我只想更新结果中的某些列。如果没有匹配,那么我想将新数据附加到结果中。列名将始终相同,因此无需填写。

要遵循的示例:

在此示例中,我想按n2进行合并,但只有在n3和{{1}之间存在匹配的n2值时,才会在结果中更改dat否则,将new_dat的数据追加到new_dat

dat

这是否需要两个步骤:首先更新匹配变量,然后附加不匹配的变量?或者,我可以以某种方式使用合并吗?

1 个答案:

答案 0 :(得分:3)

由于这实际上是具有一些额外条件的外部合并,因此您无法在[运算符中的单个步骤中执行此操作。我会做以下事情:

rbind(copy(dat)[new_dat, n3 := i.n1, on = "n2"], new_dat[!dat, on = 'n2'])
#   n1  n2 n3
#1:  a   k aa
#2:  b   l  g
#3:  c   m  h
#4:  d   n  i
#5:  e   o  j
#6:  z xyz  b

(如果您不关心对原始数据的修改,可以删除copy