用另一列R替换列中的值

时间:2015-08-27 02:10:59

标签: r replace multiple-columns

我有两个不同维度的表,现在我想根据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

怎么做?

2 个答案:

答案 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通过引用更新。