我有一堆大的CSV,它们都包含完全相同的列,我需要将它们合并到一个CSV中,所以基本上是将每个数据帧的所有数据附加到下一个数据帧的下面。这样的
表1
一个可能的解决方案,在base R
:
rbind(df1, df2)
#> Prop_ID State Pasture Soy Corn
#> 1 1 WI 20 45 75
#> 2 2 MI 10 80 122
#> 3 3 MN 152 0 15
#> 4 4 IL 0 10 99
或使用dplyr
:
dplyr::bind_rows(df1, df2)
假设所有csv文件都在一个目录中,并且这些是该目录中唯一的文件,那么使用data.table
的解决方案应该可以工作。
library(data.table)
setwd('<directory with your csv files>')
files <- list.files(pattern = '.+\.csv$')
result <- rbindlist(lapply(files, fread))
list.files(...)
根据模式返回一个向量,其中包含给定目录中的文件名。这里我们只要求在末尾包含.csv
的文件。
fread(...)
是data.table
的一个非常快的文件读取器。我们将此函数应用于每个文件名(lapply(files, fread)
),以生成包含每个csv内容的列表。然后我们使用rbindlist(...)
将它们按行组合。