在R语言中连接数据框:合并含Clubs列的两个数据框且不重复列
在R语言中合并含相同Clubs列的数据框(仅保留匹配值)
要实现仅保留两个数据框中Clubs列匹配的值,且合并后不重复Clubs列,你可以用以下两种常用方法:
方法1:基础R的merge()函数
merge()是R内置的合并函数,通过指定匹配列和连接类型即可满足需求:
# 示例数据框 df1 <- data.frame(Clubs = c("曼联", "利物浦", "阿森纳"), Points = c(85, 80, 75)) df2 <- data.frame(Clubs = c("曼联", "利物浦", "切尔西"), Goals = c(70, 65, 60)) # 内连接合并(仅保留匹配的Clubs值) merged_df <- merge(df1, df2, by = "Clubs", all = FALSE) print(merged_df)
by = "Clubs":指定以Clubs列作为匹配依据all = FALSE:开启内连接模式,只保留两个数据框中都存在的Clubs记录(默认就是该值,可省略)- 合并后
Clubs列仅保留一列,不会重复
方法2:tidyverse的inner_join()函数
如果你使用tidyverse工作流,dplyr包的inner_join()更简洁直观:
# 首次使用需先安装dplyr # install.packages("dplyr") library(dplyr) # 内连接合并 merged_df <- inner_join(df1, df2, by = "Clubs") print(merged_df)
inner_join()本身就是内连接逻辑,自动只保留两边匹配的Clubs值- 同样会自动去重
Clubs列,仅保留一列
补充说明
如果两个数据框的球队列名不一致(比如一个叫Club,一个叫Clubs),可以通过指定列名映射来匹配:
# 列名不同时的匹配方式(基础R) merged_df <- merge(df1, df2, by = c("Clubs" = "Club")) # 列名不同时的匹配方式(dplyr) merged_df <- inner_join(df1, df2, by = c("Clubs" = "Club"))
内容的提问来源于stack exchange,提问作者Daniel Isaac Chavez
相关产品推荐
相关产品推荐

