使用 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)
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
我有两个数据框。
第一个 (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)
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