我有两个不同维度的表,现在我想根据userids将值datA $ swl1替换为datB $ swl2中的值。
datA
id swl1
1 0.8
2 0.7
3 0.4
4 0.7
5 0.0
DATB
id swl2
1 0.8
3 0.6
5 0.7
输出
datA(此处swl1被swl2中的新值替换,但并非所有id都有新值,对于那些没有的值,保留原始值)
id swl1
1 0.8
2 0.7
3 0.6
4 0.7
5 0.7
怎么做?
答案 0 :(得分:4)
您可以使用一行代码获取此结果:
datA$swl1[datA$id %in% datB$id] <- datB$swl2
#> datA
# id swl1
#1 1 0.8
#2 2 0.7
#3 3 0.6
#4 4 0.7
#5 5 0.7
使用%in%
运算符,我们选择属于与datA$swl1
中列出的id
相同的行的datB
列的条目。然后,datA$swl1
列中的这些值将替换为swl2
的{{1}}列的条目。
答案 1 :(得分:2)
IIUC,使用data.table v1.9.5
:
require(data.table)
setDT(datA)[datB, swl1 := swl2, on = "id"]
datA
通过引用更新。