簡體   English   中英

使用R來匹配兩個數據幀的公共列中的值,然后跨相應數據寫入

[英]Using R to match values in a common column for two dataframes and then writing across corresponding data

我有兩個數據框。

第一個(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

使用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

數據

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)

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM