给定2个在列名/数据类型方面相同的数据帧(其中某些列唯一地标识行),是否有一种有效的功能/方法可以使一个data.frame“更新”另一数据?
例如,下面,original
和replacement
由'Name'
和'Id'
标识。 goal
是从replacement
中的original
查找所有行(通过唯一ID)并替换为Value1
和Value2
的结果
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) )
该解决方案应适用于任意长度的
original
和replacement
(尽管replacement
的行绝不能超过original
)。实际上,我使用2个id列。 最佳答案
只需设置唯一的ID作为行名。然后是简单的索引编制:
rownames(original) = original$Id
rownames(replacement) = replacement$Id
original[rownames(replacement), ] = replacement