给定2个在列名/数据类型方面相同的数据帧(其中某些列唯一地标识行),是否有一种有效的功能/方法可以使一个data.frame“更新”另一数据?

例如,下面,originalreplacement'Name''Id'标识。 goal是从replacement中的original查找所有行(通过唯一ID)并替换为Value1Value2的结果

original = data.frame( Name = c("joe","john") , Id = c( 1 , 2) , Value1 = c(1.2,NA), Value2 = c(NA,9.2) )
replacement = data.frame( Name = c("john") , Id = 2 , Value1 = 2.2 , value2 = 5.9)
goal = data.frame( Name = c("joe","john") , Id = c( 1 , 2) , Value1 = c(1.2,2.2), Value2 = c(NA,5.9) )


该解决方案应适用于任意长度的originalreplacement(尽管replacement的行绝不能超过original)。实际上,我使用2个id列。

最佳答案

只需设置唯一的ID作为行名。然后是简单的索引编制:

rownames(original) = original$Id
rownames(replacement) = replacement$Id

original[rownames(replacement), ] = replacement

09-16 17:42