我在一个名为final_data_dummied * .csv的文件夹中有几个csv,它们有不同的列数。一个csv有3310,另一个有3455,另一个有3752列。 我通过以下方式将它们读入R:
file_path <- c("D:/chunks csv")
setwd(file_path)
files <- grep(list.files(path = file_path), pattern="final_data_dummied_", value=T)
然而,当我尝试使用以下代码组合它们时:
library(data.table)
DT = rbindlist(lapply(files, fread,nThread = 3,fill = TRUE))
我收到以下错误:
正如你所看到的,我也尝试使用fill = TRUE参数进行fread,但我仍然得到同样的错误。
我在这里使用fread是因为它是读取文件中最快的,每个文件的大小都是&gt; 2GB。
我的目的是将所有这些组合成一个数据帧,如果文件之间的列不匹配,对于这些列,请按NA或0填充值。 有人可以帮帮我吗?
以下是可重复性的样本示例:
final_data_dummied_1.csv
rev_m1 oth_m1 sports_m1
19.95 3.41 8.6
19.85 4.41 8.6
14.85 9.31 8.6
19.9 5.46 8.6
19.8 3.46 8.6
final_data_dummied_2.csv
sports_m1 venue_m2 io_m2
8.9 14.36 1
8.9 19.26 2
8.9 27.16 5
8.9 17.36 4
8.9 21.26 2
合并后的预期产出:
rev_m1 oth_m1 sports_m1 venue_m2 io_m2
19.95 3.41 8.6 0 0
19.85 4.41 8.6 0 0
14.85 9.31 8.6 0 0
19.9 5.46 8.6 0 0
19.8 3.46 8.6 0 0
0 0 8.9 14.36 1
0 0 8.9 19.26 2
0 0 8.9 27.16 5
0 0 8.9 17.36 4
0 0 8.9 21.26 2
更新:
基于建议的工作版本:
library(data.table)
library(readr)
library(dplyr)
tbl = lapply(files, fread,nThread = 3) %>% bind_rows()