繁体   English   中英

通过匹配两个数据框中的多个列在 R 中添加一个新列?

[英]Adding a new column in R from matching multiple columns in two dataframes?

我有两个如下所示的数据框,正在尝试添加一个新列。 我想在数据框 1 中添加一个新列,它来自匹配 Dataframe 1 中具有不同名称(姓名、年龄、国家/地区)的 3 个不同列和 Dataframe2 中的(First、Age、BornPlace)。

我尝试过过滤和设置新列,但我无法处理 df1 中的每一行。

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    ...        ...       -

我们可以使用left_join

library(dplyr)
left_join(df1, df2, by=c("Name"="First","Age" = "AgeNum","Country" = "BornPlace"))
   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

使用 data.table package

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM