【发布时间】:2014-04-06 12:40:43
【问题描述】:
如果有一个数据框包含 2 种类型的观察值,由 ID 编码(id.1、id.2)和相应的值(val.1、val.2)以及本示例中由@987654326 表示的其他几个数据@。
set.seed(1)
# df.master
id.1= c("abc", "def", "ghi", "jkl")
val.1= c(1, 2, 3, 4)
id.2= c("mno", "pqr", "stu", "vwx")
val.2= c(5, 6, 7, 8)
val.other= rep(runif(1),4)
df.master= data.frame(id.1, id.2, val.other, val.1, val.2)
df.master 看起来像:
id.1 id.2 val.other val.1 val.2
1 abc mno 0.2655087 1 5
2 def pqr 0.2655087 2 6
3 ghi stu 0.2655087 3 7
4 jkl vwx 0.2655087 4 8
我生成的新数据分别存储在第二个和第三个数据帧df.new.1 和df.new.2。
df.new.1 看起来像:
id.3 val.3
1 abc 10
2 ghi 20
3 stu 30
# Create an 2nd data frame, which contains new values
id.3= c("abc", "ghi", "stu")
val.3= c(10, 20, 30)
df.new.1= data.frame(id.3, val.3)
df.new.2 看起来像:
id.4 val.4
1 def 100
2 vwx 200
# Create an 3rd data frame, which contains new values
id.4= c("def", "vwx")
val.4= c(100, 200)
df.new.2= data.frame(id.4, val.4)
我想根据df.new.1 和df.new.2 的内容更新df.master,同时保持df.master 的原始结构导致以下结果:
id.1 id.2 val.other val.1 val.2
1 abc mno 0.2655087 10 5
2 def pqr 0.2655087 100 6
3 ghi stu 0.2655087 20 30
4 jkl vwx 0.2655087 4 200
请注意,df.new.1 和 df.new.2 包含与 id.1 和 id.2 的 df.master 匹配的新数据。
对执行df.master更新的代码有什么建议吗?
【问题讨论】:
-
请看this方法