Transfer values from one dataframe to another

后端 未结 4 794
醉梦人生
醉梦人生 2020-12-16 05:13

I have two data frames. The first looks like this:

value <- seq(1, 100, length.out=20)
df1 <- data.frame(id=as.character(1:20), 
                  valu         


        
4条回答
  •  不思量自难忘°
    2020-12-16 05:36

    Using data.table:

    require(data.table)
    dt1 <- data.table(df1, key="id")
    dt2 <- data.table(df2)
    
    dt1[dt2$id, value]
    
    #    id     value
    # 1:  1  1.000000
    # 2:  2  6.210526
    # 3:  3 11.421053
    # 4:  4 16.631579
    # 5:  5 21.842105
    # 6: 21        NA
    # 7: 22        NA
    # 8: 23        NA
    

    or using base merge as @TheodoreLytras mentioned under comment:

    # you don't need to have `v2` column in df2
    merge(df2, df1, by="id", all.x=T, sort=F)
    
    #   id v2     value
    # 1  1 NA  1.000000
    # 2  2 NA  6.210526
    # 3  3 NA 11.421053
    # 4  4 NA 16.631579
    # 5  5 NA 21.842105
    # 6 21 NA        NA
    # 7 22 NA        NA
    # 8 23 NA        NA
    

提交回复
热议问题