首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R来匹配两个数据的公共列中的值,然后跨相应的数据写入

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

Stack Overflow用户
提问于 2018-04-23 10:50:43
回答 2查看 89关注 0票数 1

我有两张数据。

第一个(df1)有一个列,它记录每一行的旧ID号,还有一个列有相应的新ID号。这是一个更大的数据集。

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

下面是数据集的一个虚拟示例:

df1

代码语言:javascript
复制
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

代码语言:javascript
复制
OldID    CPH
ID10004  77/567/4433
ID10001  66/123/4567

还有一个我想要的最后一个df2的虚拟例子

代码语言:javascript
复制
 OldID    CPH         NewID
ID10004  77/567/4433  6488
ID10001  66/123/4567  5091
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 10:58:12

使用match来子集df1,并使用$提取'NewID‘的值。

代码语言:javascript
复制
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

数据

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2018-04-23 10:59:50

使用dplyr::left_join()

代码语言:javascript
复制
library(dplyr)
df3 <- df2 %>%
  left_join(df1, by = 'OldID') %>%
  select(-c(Numofsh, Loc))

产额

代码语言:javascript
复制
    OldID         CPH NewID
1 ID10004 77/567/4433  6488
2 ID10001 66/123/4567  5091
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49979293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档