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

如何识别批量CSV文件列名差异并统一所有文件的列名

R实现CSV文件列名校验与批量修正方案

1. 找出列名存在差异的文件

你之前的代码存在笔误,tri_paths应为dt_paths,我们可以基于列名的统计结果直接筛选异常文件:

# 加载依赖包
library(fs)
library(purrr)
library(readr)
library(stringr)

# 读取所有csv的首行列名字符串
dt_paths <- dir_ls(path = "data", glob = "*.csv")
colname_lines <- map_chr(dt_paths, ~read_lines(.x, n_max = 1))

# 统计列名出现频次,取出现次数最多的为标准列名字符串
colname_stat <- table(colname_lines)
standard_col_line <- names(colname_stat)[which.max(colname_stat)]

# 筛选出列名不一致的异常文件路径
abnormal_files <- names(colname_lines[colname_lines != standard_col_line])
# 输出异常文件列表
abnormal_files

运行上述代码后,abnormal_files就是你要找的4个列名异常的文件路径。

2. 批量修正异常文件的列名

前置提示:建议先备份所有异常文件,避免误操作丢失数据

# 先把标准列名字符串转为列名向量
standard_cols <- unlist(str_split(standard_col_line, ","))

# 批量读取异常文件,替换列名后写回原路径
walk(abnormal_files, function(path) {
  # 读取文件
  dt <- read_csv(path, show_col_types = FALSE)
  # 校验列数一致性,若列数不一致会抛出错误终止运行,避免数据错乱
  stopifnot(length(colnames(dt)) == length(standard_cols))
  colnames(dt) <- standard_cols
  # 写回原文件,覆盖原内容
  write_csv(dt, path)
})

校验修正结果

修正完成后可以重新运行列名校验代码,确认所有文件列名完全一致:

new_colname_lines <- map_chr(dt_paths, ~read_lines(.x, n_max = 1))
table(new_colname_lines)
# 输出结果只有1个分类且计数为100即为修正成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:15:01