You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中合并三个世界杯相关CSV文件遇问题求助

R合并三个世界杯CSV文件的解决方案

问题根源分析

出现0行结果或重复行的核心原因通常是两个:

  1. Country列字符串格式不统一:比如大小写差异(USA vs usa)、前后空格( USA vs USA)、拼写变体(South Korea vs Korea, South),导致merge时无法匹配条目。
  2. 单文件内Country重复:某个CSV里同一个国家存在多条记录,合并后会生成重复行。

解决步骤

1. 标准化Country列格式

先对三个文件的Country列做统一清理,消除格式差异:

G <- read.csv("G.csv", fileEncoding="UTF-8-BOM")
GG <- read.csv("GG.csv", fileEncoding="UTF-8-BOM")
LL <- read.csv("LL.csv", fileEncoding="UTF-8-BOM")

# 去除前后空格+转成小写,统一匹配规则
G$Country <- trimws(tolower(G$Country))
GG$Country <- trimws(tolower(GG$Country))
LL$Country <- trimws(tolower(LL$Country))

2. 处理单文件内的重复Country(按需)

如果某个文件里同一个国家有多条记录,先去重(默认保留第一条,可按需调整):

# 基础R去重方式
GG <- GG[!duplicated(GG$Country), ]
LL <- LL[!duplicated(LL$Country), ]
G <- G[!duplicated(G$Country), ]

# 或用dplyr更直观(需先加载包)
# install.packages("dplyr")
# library(dplyr)
# GG <- distinct(GG, Country, .keep_all = TRUE)

3. 合并三个文件

方法一:基础R的merge函数

逐步合并,指定all.x = TRUE可保留G文件里的所有国家(若需保留所有文件的国家,改用all = TRUE):

# 先合并G和GG
merged1 <- merge(G, GG, by = "Country", all.x = TRUE)
# 再合并LL
final_df <- merge(merged1, LL, by = "Country", all.x = TRUE)
方法二:dplyr链式合并(更简洁)

习惯tidyverse风格的话,用left_join逻辑更清晰:

install.packages("dplyr") # 首次使用需安装
library(dplyr)

final_df <- G %>%
  left_join(GG, by = "Country") %>%
  left_join(LL, by = "Country")

4. 导出合并后的CSV

write.csv(final_df, "merged_worldcup_data.csv", row.names = FALSE, fileEncoding = "UTF-8-BOM")

验证结果

可以通过head(final_df)或table(final_df$Country)查看合并后的数据,确认是否存在重复或缺失的国家条目。

内容的提问来源于stack exchange,提问作者Adr0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:54:04