首页 文章

R-通过替换公共参考值来组合两个数据帧

提问于
浏览
2

让我有这样的数据帧(df1和df2):

DF1

ID  y
4   12
2   65
3   7
5   878
1   1
7   122

DF2

ID  z

2   90
5   16
1   22

在df2中,ID也可以在df1中使用 . 即,就ID列而言,df2是df1的子集 .

我想创建一个新的数据框(df3)

ID  y
4   12
2   90
3   7
5   16
1   22
7   122

即,在df1中,y值被df2中的z值替换为公共ID .

怎么用R?我会很高兴得到任何帮助 . 非常感谢 .

1 回答

  • 2

    使用 data.table ,我们可以加入两个data.tables并通过引用更新 y

    library(data.table)   ## version 1.9.6
    
    ## Using your original data.frame objects you would use
    # dt1 <- as.data.table(df1)
    # dt2 <- as.data.table(df2) 
    
    dt1 <- data.table(id = c(4,2,3,5,1,7),
                      y = c(12, 65, 7, 878, 1, 122))
    
    dt2 <- data.table(id = c(2,5,1),
                      z = c(90, 16, 22))
    
    
    dt1[ dt2, on="id", y := z  ]
    dt1
    #    id   y
    # 1:  4  12
    # 2:  2  90
    # 3:  3   7
    # 4:  5  16
    # 5:  1  22
    # 6:  7 122
    

    您还可以在 keys 中指定连接列(适用于旧版本的 data.table

    setkey(dt1, id)
    setkey(dt2, id)
    
    dt1[ dt2, y := z  ]
    dt1
    

相关问题