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

如何在R中合并CSV文件的两行分组表头?

解决两行表头CSV的导入问题

针对你遇到的两行表头CSV导入问题,可按以下步骤处理,确保政党名称和得票信息能完整合并为列名:

步骤1:读取表头与数据主体

先单独提取前两行表头信息,再读取跳过表头的数据部分:

# 文件路径
file_path <- "./electoral_data/municipal/2011/IBESTAT_I3101_430111_2023_02_06.csv"

# 读取前两行表头内容
header_lines <- readLines(file_path, n = 2)
# 按分隔符拆分每行成列
header_party <- strsplit(header_lines[1], ";")[[1]]
header_vote <- strsplit(header_lines[2], ";")[[1]]

步骤2:填充表头空值(针对隔列缺失政党名的情况)

如果第一行表头中,同一政党的两列仅第一列有名称、第二列为空,需先填充空值:

# 把空字符串转为NA
header_party[header_party == ""] <- NA

# 手动填充NA为前一个非NA值(无需额外包)
header_party_filled <- header_party
for (i in 2:length(header_party_filled)) {
  if (is.na(header_party_filled[i])) {
    header_party_filled[i] <- header_party_filled[i-1]
  }
}

如果你的第一行表头中,同一政党的对应列已重复显示政党名,可跳过这一步直接进入拼接。

步骤3:拼接两行表头为完整列名

将填充后的政党名称与得票类型拼接:

new_colnames <- paste(header_party_filled, header_vote, sep = "_")

步骤4:读取数据并设置新列名

导入跳过前两行的数据,同时赋予拼接好的列名:

# 读取数据,跳过前两行表头
data_test <- read.csv(file_path, sep = ";", skip = 2, header = FALSE)
# 设置新列名
colnames(data_test) <- new_colnames

这样处理后,每一列都会得到政党名称_得票类型的完整命名,不会出现隔列无效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:45:21