Combining .csv files issues for loop

问题描述 投票:0回答:2

我有 5 个 .csv 文件,每个文件都有相同的列名,但每个文件都有不同的列顺序。当我尝试合并所有这 5 个 .csv 文件时,某些列的值被另一列的值替换。有没有人知道该怎么做?

r for-loop
2个回答
0
投票

正如您可能在其他地方读到的那样,您通常希望避免在 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 文件中的行名称组合数据集。

如果这不起作用,请尝试为您的问题提供更多详细信息,这样人们会更容易提供帮助。


0
投票
如果所有 5 个 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)
    
© www.soinside.com 2019 - 2024. All rights reserved.