将具有不同列数的多个csv文件合并到R

时间:2018-06-05 09:13:44

标签: r data.table fread

我在一个名为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))

我收到以下错误:

enter image description here

正如你所看到的,我也尝试使用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()

0 个答案:

没有答案