首页 文章

使用R匹配两个数据帧的公共列中的值,然后跨相应的数据写入

提问于
浏览
1

我有两个数据帧 .

第一个(df1)有一列记录每行的旧ID号和一列具有相应的新ID号 . 这是一个更大的数据集 .

第二个(df2)有一列只有每行的旧ID号 . 我想在第二个数据框中创建一个新列,其中包含在df1中找到的相应新ID号 .

以下是数据集的虚拟示例:

df1

OldID     NewID Numofsh Loc
ID10000   4853  158     Bath
ID10001   5091  43      York
ID10002   5205  12      Cambridge
ID10003   4897  6       London
ID10004   6488  8       Edinburgh

df2

OldID    CPH
ID10004  77/567/4433
ID10001  66/123/4567

以及我想要的最终df2的虚拟示例

OldID    CPH         NewID
ID10004  77/567/4433  6488
ID10001  66/123/4567  5091

2 回答

  • 0

    使用dplyr::left_join()

    library(dplyr)
    df3 <- df2 %>%
      left_join(df1, by = 'OldID') %>%
      select(-c(Numofsh, Loc))
    

    哪个收益率

    OldID         CPH NewID
    1 ID10004 77/567/4433  6488
    2 ID10001 66/123/4567  5091
    
  • 0

    使用 match 子集 df1 并使用 $ 提取'NewID'的值 .

    df2$NewID <- df1[match(df2$OldID, df1$OldID), ]$NewID
    df2
    #    OldID         CPH NewID
    #1 ID10004 77/567/4433  6488
    #2 ID10001 66/123/4567  5091
    

    data

    df1 <- read.table(text = "OldID     NewID Numofsh Loc
    ID10000   4853  158     Bath
    ID10001   5091  43      York
    ID10002   5205  12      Cambridge
    ID10003   4897  6       London
    ID10004   6488  8       Edinburgh", header = TRUE)
    
    df2 <- read.table(text = "OldID    CPH
    ID10004  77/567/4433
    ID10001  66/123/4567", header = TRUE)
    

相关问题