我有 5 个 .csv 文件,每个文件都有相同的列名,但每个文件都有不同的列顺序。当我尝试合并所有这 5 个 .csv 文件时,某些列的值被另一列的值替换。有没有人知道该怎么做?
正如您可能在其他地方读到的那样,您通常希望避免在 R 中使用 for 循环(尽管这是一个我们不需要深入讨论的长期争论)。幸运的是,你可以很简单地做到这一点。
假设您所有的 CSV 文件都在同一个目录中,并且您想要加载 all 该目录中的 CSV 文件,您可以使用:
library(dplyr)
library(purrr)
library(readr)
loaded_data <- dir(
"path_to_your_directory_of_csv_files",
pattern = "\\.csv$",
full.names = TRUE
) |>
map(read_csv) |>
bind_rows()
dir()
获取 CSV 文件目录中扩展名为 .csv
的所有文件的文件路径/名称。 purrr 包map()
然后将 readr 包 中的 read_csv()
函数应用于每个文件,加载每个文件。最后,dplyr 包中的bind_rows()
根据第一个 CSV 文件中的行名称组合数据集。
如果这不起作用,请尝试为您的问题提供更多详细信息,这样人们会更容易提供帮助。
data.table::fread()
中通过选择指定它们,以便按原样读取每个文件。 (假设它们在每个表中的命名方式相同)
step 1: with lapply(fread("path//to//csv//",select = c("col1","col2","col3","col4","col5", ....other parameters) get "list of files read"
step 2 : bind_rows(list of files read in step 1)