有没有办法在将一个data.frame连接到另一个data.frame时替换匹配行上的列值?

use*_*057 3 join r dataframe dplyr data.table

我正在努力通过一些参考专栏将一个数据表的元素与另一个"主"集合在一起.为了使事情更清楚,我创建了一些示例数据:

这是我想要加入另一个"主集"的数据集.

data.frame(refID = c(1,3,4,5,7,8), value = c(3.3,3.9,4.4,8.0,1.1,2.5))

refID   value
1       3.3
3       3.9
4       4.4
5       8.0
7       1.1
8       2.5
Run Code Online (Sandbox Code Playgroud)

主集:

data.frame(refID = 1:9, value = rep(0,9))

refID   value
1       0
2       0
3       0
4       0
5       0
6       0
7       0
8       0
9       0
Run Code Online (Sandbox Code Playgroud)

我基本上希望将第一个数据集中的值列发送到第二个数据集,但是如果存在间隙,则让它们的值为0.最终,我希望得到:

结果集:

refID   value
1       3.3
2       0.0   
3       3.9
4       4.4
5       8.0
6       0.0
7       1.1
8       2.5
9       0.0
Run Code Online (Sandbox Code Playgroud)

我打得周围的一些东西dplyrdata.table包,但似乎无法真正找出这样做的一个很好的和直接的方式.非常感谢建议,非常感谢.

Aru*_*run 6

使用data.table,您可以通过引用将第一个data.table中的值替换为第二个,如下所示:

require(data.table)

# data
DT1 = data.table(refID = c(1,3,4,5,7,8), value = c(3.3,3.9,4.4,8.0,1.1,2.5))
DT2 = data.table(refID = 1:9, value = 0)

setkey(DT2, refID)
DT2[DT1, value := i.value]
#    refID value
# 1:     1   3.3
# 2:     2   0.0
# 3:     3   3.9
# 4:     4   4.4
# 5:     5   8.0
# 6:     6   0.0
# 7:     7   1.1
# 8:     8   2.5
# 9:     9   0.0
Run Code Online (Sandbox Code Playgroud)

请参阅这篇文章以获得解释.