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

R语言批量导入CSV:如何将每个文件数据存入独立列?

解决CSV批量导入时同名字段合并的问题

当然可以在现有代码基础上修改,核心思路是给每个文件的列名添加唯一标识(比如文件名前缀),避免不同文件的同名列被合并。

修改后的代码如下:

library(tidyverse)

dat <- dir_ls(regexp = "\\.csv$") %>%
  # 提取文件名(去掉路径和.csv后缀)作为每个文件的标识
  set_names(nm = ~ str_remove(basename(.), "\\.csv$")) %>%
  # imap遍历,同时获取文件路径和对应的文件名标识
  imap_dfr(function(file_path, file_name) {
    # 读取CSV文件
    read_csv2(file_path, col_types = cols(.default = col_character())) %>%
      # 给所有列名添加文件名前缀,格式为"文件名_原列名"
      rename_with(~ paste0(file_name, "_", .x), everything())
  })

关键修改说明:

  • 用set_names给每个文件路径绑定一个简洁的文件名(去掉.csv后缀),作为后续列名的前缀来源。
  • 替换map_df为imap_dfr:imap能同时拿到文件路径和我们设置的文件名标识,dfr保证最终输出为数据框。
  • 通过rename_with给每一列的名称加上文件名前缀,确保不同文件的同名列拥有唯一名称,导入后不会被合并成同一列。

举个例子:如果有两个文件data_jan.csv和data_feb.csv,都包含sales列,处理后会变成data_jan_sales和data_feb_sales两个独立列,完全避免数据堆叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:48:14