首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从匹配两个数据帧中的多个列在R中添加新列?

从匹配两个数据帧中的多个列在R中添加新列?
EN

Stack Overflow用户
提问于 2021-10-06 19:53:57
回答 2查看 34关注 0票数 1

我有两个数据框,如下所示,并且正在尝试添加一个新列。我想在数据帧1中添加一个新列,它来自于匹配数据帧1中具有不同名称(名称,年龄,国家)和Dataframe2中(第一,年龄,BornPlace)的3个不同列。

我已经尝试过过滤和设置新列,但我无法对df1中的每一行都执行操作。

代码语言:javascript
复制
Data frame 1
   Name    Age    Country   Unrelated  Unrelated 
1  Josh    15     USA       ...        ...      
2  Kyle    18     USA       ...        ...       
3  Pete    17     USA       ...        ...       
4  Devin   19     USA       ...        ...       
5  Josh    15     Canada    ...        ...      

Data frame 2
   First   AgeNum  BornPlace   Unrelated  Unrelated Weight
1  Max     25      USA          ...        ...       150
2  Morgan  28      USA          ...        ...       170
3  Josh    15      USA          ...        ...       140
3  Devin   19      USA          ...        ...       180

Expected Result(Dataframe1 with new column)

   Name    Age    Country   Unrelated  Unrelated Weight
1  Josh    15     USA       ...        ...       140
2  Kyle    18     USA       ...        ...       -   
3  Pete    17     USA       ...        ...       -     
4  Devin   19     USA       ...        ...       180     
5  Josh    15     Canada    ...        ...       -
EN

回答 2

Stack Overflow用户

发布于 2021-10-06 20:22:54

我们可以使用left_join

代码语言:javascript
复制
library(dplyr)
left_join(df1, df2, by=c("Name"="First","Age" = "AgeNum","Country" = "BornPlace"))
代码语言:javascript
复制
   Name Age Country Weight
1  Josh  15     USA    140
2  Kyle  18     USA     NA
3  Pete  17     USA     NA
4 Devin  19     USA    180
5  Josh  15  Canada     NA
票数 0
EN

Stack Overflow用户

发布于 2021-10-06 20:23:21

使用data.table包

代码语言:javascript
复制
merge.data.table(
  x = DT1, y = DT2, 
  by.x = c('Name','Age','Country'), 
  by.y = c('First','Age','BornPlace'), 
  all.x = T, all.y = F)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69471956

复制
相关文章

相似问题

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