我想读一个大约110,000,000行和8列的大型ido文件。列由2个整数列和6个逻辑列组成。分隔符"|"
在文件中使用。我尝试使用read.big.matrix
并且它花了很长时间。我也试过dumpDf
并且RAM耗尽了。我试过ff
,我听说这是一个很好的包,我正在努力解决错误。如果我能以某种方式阅读它,我想用这个表做一些分析。如果有人有任何建议会很棒。
亲切的问候,
洛坎
答案 0 :(得分:8)
感谢您的所有建议。我设法找出为什么我不能让错误工作。我会给你所有的答案和建议,所以没有人能再次犯下我的愚蠢错误。
首先,给我的数据包含了一些错误,所以我注定要从一开始就失败。直到一位同事在另一个软件中遇到它时我才意识到。在包含整数的列中有一些字母,以便当read.table.ff
包试图读取数据集时,它会以某种方式混淆或者我不知道。无论我得到了另一个数据样本,16,000,000行和8列具有正确的条目,它完美地工作。我运行的代码如下,大约需要30秒才能阅读:
setwd("D:/data test")
library(ff)
ffdf1 <- read.table.ffdf(file = "test.ido", header = TRUE, sep = "|")
感谢大家的时间,如果您对答案有任何疑问,请随时提出,我会尽力帮助您。
答案 1 :(得分:2)
您真的需要所有数据进行分析吗?也许你可以汇总你的数据集(比如从分钟值到每日平均值)。这种聚合只需要完成一次,并且有希望以块的形式完成。通过这种方式,您需要立即将所有数据加载到内存中。
可以使用scan
来读取块,重要的参数是skip
和n
。或者,将数据放入数据库并以这种方式提取块。您甚至可以使用plyr
包中的函数并行运行块,请参阅我的this blog post作为示例。