如何一次将多个 csv 文件读入 R 并知道数据来自哪个文件?

sax*_*yan 1 r

我想将多个 csv 文件读入 R 并将它们组合成一个大表。但是,我需要一个列来标识每行来自哪个文件。

基本上,文件中的每一行都有一个唯一的标识号,但这些号码在文件中重复。因此,如果我在不知道每一行来自哪个文件的情况下将所有文件绑定到一个表中,我将不再拥有唯一标识符,这使我计划的分析变得不可能。

到目前为止我所拥有的是这个,但这并没有给我数据来自哪个文件。

list_file <- list.files(pattern="*.csv") %>% lapply(read.csv,stringsAsFactors=F)
combo_data <- list.rbind(list_file)
Run Code Online (Sandbox Code Playgroud)

我有大约 100 个文件要阅读,所以我真的很感激任何帮助,所以我不必单独完成它们。

Ron*_*hah 6

一种方法是使用map_dffrompurrr将所有 csv 绑定到具有唯一列标识符的一个。

filenames <- list.files(pattern="*.csv")

purrr::map_df(filenames, read.csv,stringsAsFactors = FALSE, .id = 'filename') %>%
  dplyr::mutate(filename = filenames[filename]) -> combo_data
Run Code Online (Sandbox Code Playgroud)

还 :

combo_data <- purrr::map_df(filenames, 
              ~read.csv(.x, stringsAsFactors = FALSE) %>% mutate(filename = .x))
Run Code Online (Sandbox Code Playgroud)

在基础 R 中:

combo_data <- do.call(rbind, lapply(filenames, function(x) 
                     cbind(read.csv(x, stringsAsFactors = FALSE), filename = x)))
Run Code Online (Sandbox Code Playgroud)