小编Zhi*_*Lin的帖子

合并数百万个具有不同标题的 csv 文件

我有数百万个具有不同标题的 csv 文件,我想将它们合并到一个大数据框中。

我的问题是我尝试过的解决方案有效,但速度太慢!顺便问一下,我可以在实验室中使用 Sparklyr 来处理多节点集群,这个大数据工具有帮助吗?

这些文件看起来像这样:

文件1

标头1,标头3,标头5

甲、乙、丙

文件2

标头4,标头2

e,f

文件3

标头2,标头6

一个,c

我想将它们合并为:

标头1、标头2、标头3、标头4、标头5、标头6

a,,b,,c,,f,,e,,,a,,,,c

我尝试将它们直接与 R 绑定,但程序在服务器中运行几天后崩溃了。代码如下所示:

library(plyr)
library(dplyr)
library(readr)


csvfiles <- list.files(pattern = "file\\d+.csv") 

for (i in 1:length(csvfiles)) {
  assign(paste0("files", i),read_csv(csvfiles[[i]]))
}

csvlist <- mget(ls(pattern = "files\\d"))

result <- data.frame()

for (i in 1:length(csvlist)){
  my_list <- list(result,csvlist[[i]])
  result <- rbindlist(my_list,use.names=TRUE, fill=TRUE)
 }

Run Code Online (Sandbox Code Playgroud)

然后我尝试首先使用命令行工具(例如sedawk和 )提取标头csvtk。我使用的代码如下所示

for file in $(ls file*.csv); do cat $file | sed "2 d" | csvtk …
Run Code Online (Sandbox Code Playgroud)

csv awk r bigdata

1
推荐指数
1
解决办法
1347
查看次数

标签 统计

awk ×1

bigdata ×1

csv ×1

r ×1