R语言合并CSV文件时如何添加源文件名作为变量?
解决方案
在你现有的代码基础上,只需要在读取每个CSV文件后新增一列记录文件名即可,用dplyr::mutate就能实现。修改后的完整代码如下:
library(dplyr) library(readr) df <- list.files(path="./", pattern = ".csv", full.names = FALSE) %>% lapply(function(x) { # 读取指定列后,新增source_file列存储当前文件名 read_csv2(x, col_select = c("variable1","variable2")) %>% mutate(source_file = x) }) %>% bind_rows()
如果想用更简洁的写法,可以借助purrr包的imap_df函数(它会同时传递文件路径和文件名):
library(purrr) library(dplyr) library(readr) df <- list.files(path="./", pattern = ".csv", full.names = FALSE) %>% imap_df(function(file_path, file_name) { read_csv2(file_path, col_select = c("variable1","variable2")) %>% mutate(source_file = file_name) })
这两种写法都能在最终合并的数据框中,新增一列记录每条数据对应的原始CSV文件名。
内容的提问来源于stack exchange,提问作者Maciej B.
相关产品推荐
相关产品推荐

