在 R 中分析约 1000 万行数据集 (2.12 GB)

Posted

技术标签:

【中文标题】在 R 中分析约 1000 万行数据集 (2.12 GB)【英文标题】:Analyze ~10 million row dataset (2.12 GB) in R 【发布时间】:2014-04-03 01:08:57 【问题描述】:

我已经进行了一些搜索,但我发现没有什么能很好地满足我的问题......

我的 Oracle 数据库中有一个表,我想在 R 中运行回归、创建分类/回归树等。该表本身几乎有 1000 万行 - 在 .tsv 文件中为 2.12GB - 与28 个不同类型的字段(整数、数字、varchar、时间戳等),我已将其“导出”到 .tsv 文件。

我需要知道如何将这些数据导入 R,以及 R 是否可以“处理”这种大小的数据。我研究了 RODBC 包并尝试使用 odbcConnect,但我不知道该命令的“dsn”参数是什么。这是我的数据库的 SID + 主机名的组合吗?即使我知道 dsn 参数并将我的数据库连接到 R,我是否能够将表放入 data.frame 并对其执行一般分析?

我们将非常感谢一般和具体的回复!

谢谢, 克拉克

【问题讨论】:

你可以读入 R 的限制是你拥有的 RAM 数量。 简短响应是,R 可以处理 2.12GB 的文件。更详细的回答是,R 是否可以在 您的机器 上处理它取决于几件事。最重要的因素之一是您机器中的 RAM 数量,以及您为 R 提供了多少可用的 RAM。如果您单独使用 R 在此文件上运行脚本,请准备好等待。一种更快的方法是将其读入 shell 并将其切成仅包含您打算使用的数据的块,然后将其发送到 R。 RODBC 包的 documentation 详细介绍了如何在多个平台上设置 DSN。 从我说的开始。它不适用于数据库。接受@joran 的建议。您可以直接从网络上阅读。 如果您将数据作为分隔文本文件,那么fread 将是加载到 R 中的最快途径。关于内存,您需要在 64 位 Windows 上才能使用您的 RAM 已满。 【参考方案1】:

试试这个:

df <- read.table('file.tsv', header=TRUE, sep="\t")

R 应该能够处理这么大的数据集。您始终可以使用拆分实用程序将其拆分为较小的文件。

【讨论】:

不幸的是,我在尝试这样做时遇到了“致命错误”。我的计算机上只有 4GB 的 RAM,我认为这是原因。从那以后,我通过采样数据解决了这个问题......

以上是关于在 R 中分析约 1000 万行数据集 (2.12 GB)的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中处理大型数据集

从更大的基于excel的数据集中提取R中的x行数

如何使用 R Shiny 映射大型数据集?

大型数据集上的 R 中的 hclust()

如何在r [duplicate]中使用for循环从数据框中分割文本和数字

使用非常大的数据集分析 R 中两点之间的空间数据