gpt4 book ai didi

sql - 如何使用R语言处理50GB的大型CSV文件?

转载 作者:行者123 更新时间:2023-12-04 13:26:11 27 4
gpt4 key购买 nike

我在这里的“大数据处理”中相对较新,希望就如何处理50 GB的csv文件寻求一些建议。当前的问题如下:

表看起来像:

ID,Address,City,States,... (50 more fields of characteristics of a house)
1,1,1st street,Chicago,IL,...
# the first 1 is caused by write.csv, they created an index raw in the file

我想找到属于加利福尼亚旧金山的所有行。它应该是一个简单的问题,但是csv太大。

我知道我有两种在R中执行此操作的方法,以及另一种使用数据库来处理它的方法:

(1)使用R的ffdf软件包:

自上次保存文件以来,它一直使用write.csv,并且包含所有不同的类型。
all <- read.csv.ffdf(
file="<path of large file>",
sep = ",",
header=TRUE,
VERBOSE=TRUE,
first.rows=10000,
next.rows=50000,
)

控制台给了我这个:
Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,  
: vmode 'character' not implemented

在网上搜索时,我发现了一些不适合我的情况的答案,而且我真的无法像他们所说的那样将“字符”转换为“因子”类型。

然后我尝试使用read.table.ffdf,这更是灾难。我找不到该指南的可靠指南。

(2)使用R的readline:

我知道这是另一种好方法,但是找不到有效的方法。

(3)使用SQL:

如果有很好的指导,我不确定如何将文件传输到SQL版本,以及如何处理。但总的来说,我想坚持使用R。

感谢您的答复和帮助!

最佳答案

您可以在带有sqldf软件包的幕后使用R和SQLite。您可以在read.csv.sql包中使用sqldf函数,然后可以查询数据,但是要获取较小的数据框。

来自文档的示例:

library(sqldf)

iris2 <- read.csv.sql("iris.csv",
sql = "select * from file where Species = 'setosa' ")

我已经在非常大的CSV文件上使用了该库,效果很好。

关于sql - 如何使用R语言处理50GB的大型CSV文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39678940/

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