gpt4 book ai didi

更快地将多个csv文件读入data.table R

转载 作者:行者123 更新时间:2023-12-03 23:29:33 24 4
gpt4 key购买 nike

我有 900000 个 csv 文件,我想将它们合并成一个大 data.table .对于这种情况,我创建了一个 for loop它一个一个读取每个文件并将它们添加到 data.table .问题是它的执行速度变慢,并且使用的时间呈指数增长。如果有人可以帮助我使代码运行得更快,那就太好了。每个 csv 文件都有 300 行和 15 列。
到目前为止我使用的代码:

library(data.table)
setwd("~/My/Folder")

WD="~/My/Folder"
data<-data.table(read.csv(text="X,Field1,PostId,ThreadId,UserId,Timestamp,Upvotes,Downvotes,Flagged,Approved,Deleted,Replies,ReplyTo,Content,Sentiment"))

csv.list<- list.files(WD)
k=1

for (i in csv.list){
temp.data<-read.csv(i)
data<-data.table(rbind(data,temp.data))

if (k %% 100 == 0)
print(k/length(csv.list))

k<-k+1
}

最佳答案

假设您的文件是传统的 csv,我会使用 data.table::fread因为它更快。如果您使用的是类似 Linux 的操作系统,我会使用它允许 shell 命令的事实。假设您的输入文件是我要做的文件夹中唯一的 csv 文件:

dt <- fread("tail -n-1 -q ~/My/Folder/*.csv")

之后您需要手动设置列名称。

如果您想将内容保留在 R 中,我会使用 lapplyrbindlist :
lst <- lapply(csv.list, fread)
dt <- rbindlist(lst)

您也可以使用 plyr::ldply :
dt <- setDT(ldply(csv.list, fread))

这样做的好处是您可以使用 .progress = "text"获得阅读进度的读数。

以上所有假设文件都具有相同的格式并具有标题行。

关于更快地将多个csv文件读入data.table R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31316343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com