首页 > 解决方案 > 根据 r 中的某些列将 2 个表连接在一起

问题描述

我有两张桌子。我对表 1 感兴趣的列是“年份”和“公司名称”。表 2 有 3 列,包括:“年份”和“公司名称”。

如何将这两个表连接在一起?我遇到的问题是表 1 有许多列,例如年份值为“Year”=“2004”和“CompanyName”=“Adidas”。例如

# There are many other columns
   Year   CompanyName   Spent
1  2004   Adidas        50
2  2004   Nike          34
3  2004   Adidas        45
4  2005   Reebok        33
5  2006   Reebok        11
6  2006   Adidas        47
7  2007   Nike          33
8  2007   Reebok        92
9  2007   Nike          01
10 2007   Adidas        23

#I want to join this to it
   Year  CompanyName   Loss
1  2004  Nike          23
2  2004  Adidas        22
3  2005  Reebok        633
4  2006  Reebok        2
5  2006  Adidas        09
6  2007  Reebok        22
7  2007  Nike          34

我想加入表格,所以当 Year 是 2004 并且 CompanyName 是 Adidas 时,会为 Loss 添加一个值为 23 的列

谢谢你!

标签: rdplyrtidyverse

解决方案


你可以这样做

library(dplyr)

df3 <- df1 %>%
  left_join(df2, by = c("Year", "CompanyName"))

只要确保您在 df2 中没有重复年份和公司名称即可。您可以通过 执行此操作dplyr::distinct(df2, Year, CompanyName, .keep_all = T),但这可能会导致丢失一些相关信息。如果您不确定,按这两个维度聚合可能是有意义的:

df2 %>%
  group_by(Year, CompanyName) %>%
  summarise(Loss = sum(Loss))

推荐阅读