[英]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.