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)
我打得周围的一些东西dplyr和data.table包,但似乎无法真正找出这样做的一个很好的和直接的方式.非常感谢建议,非常感谢.
使用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)
请参阅这篇文章以获得解释.