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

R语言合并多CSV文件:将文件名设为合并后数据框列名

解决方法

核心思路是:在导入单个CSV文件时就把CpG列重命名为对应的文件名(去除.csv后缀),再合并所有文件,从根源避免重复列名导致的.x/.y后缀问题。

步骤1:获取所有CSV文件路径

先拿到目标文件夹下的所有CSV文件完整路径:

library(tidyverse)

# 替换为你的CSV文件实际存放路径
csv_dir <- "your/csv/folder/path"

# 获取所有.csv结尾的文件路径
csv_files <- list.files(path = csv_dir, pattern = "\\.csv$", full.names = TRUE)

步骤2:定义导入并重命名的函数

写一个函数,负责导入单个CSV、提取文件名(去后缀),并把CpG列改成对应文件名:

import_rename_cpg <- function(file_path) {
  # 提取纯文件名(去掉路径和.csv后缀)
  file_name <- str_remove(basename(file_path), "\\.csv$")
  
  # 导入CSV后重命名CpG列
  read_csv(file_path) %>%
    rename(!!file_name := CpG)  # !!实现动态列名赋值
}

步骤3:批量处理并合并文件

根据你的数据结构选择对应的合并方式:

场景1:所有文件有共同索引列(比如SampleID)

如果每个CSV都有用来匹配的唯一标识列(如样本ID),用reduce做左连接合并:

# 批量导入所有文件,得到数据框列表
df_list <- map(csv_files, import_rename_cpg)

# 按共同索引列合并(替换成你的实际索引列名,比如SampleID)
merged_df <- df_list %>% reduce(left_join, by = "SampleID")

场景2:无共同索引列,按行位置合并

如果所有文件的行顺序完全一致,直接按列合并:

merged_df <- map_dfc(csv_files, import_rename_cpg)

应急方案:已生成带后缀的合并结果

如果已经得到了带.x/.y后缀的合并数据框,可以批量重命名修正:

# 先提取所有文件名(去后缀)
file_names <- str_remove(basename(csv_files), "\\.csv$")

# 把所有CpG.x/CpG.y...替换为对应文件名
colnames(merged_old)[str_detect(colnames(merged_old), "^CpG\\.")] <- file_names

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:59:51