从R中的大型.CSV导入和提取随机样本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从R中的大型.CSV导入和提取随机样本相关的知识,希望对你有一定的参考价值。

我在R中做了一些分析,我需要处理一些大型数据集(10-20GB,存储在.csv中,并使用read.csv函数)。

因为我还需要将大型.csv文件与其他数据帧合并和转换,我没有计算能力或内存来导入整个文件。

我想知道是否有人知道导入随机百分比的csv的方法。

我已经看到一些例子,人们已经导入了整个文件,然后使用一个单独的函数来创建另一个数据框架,这是原始文件的一个样本,但是我希望能有一些不那么密集的东西。

答案

我认为没有一个好的R工具以随机方式读取文件(也许它可以是扩展read.tablefread(data.table包))。

使用perl您可以轻松完成此任务。例如,要以随机方式读取文件的1%,您可以执行以下操作:

xx= system(paste("perl -ne 'print if (rand() < .01)'",big_file),intern=TRUE)

在这里,我使用system从R调用它。 xx现在只包含1%的文件。

你可以将所有这些包装在一个函数中:

read_partial_rand <- 
  function(big_file,percent){
    cmd <- paste0("perl -ne 'print if (rand() < ",percent,")'")
    cmd <- paste(cmd,big_file)
    system(cmd,intern=TRUE)
  }

以上是关于从R中的大型.CSV导入和提取随机样本的主要内容,如果未能解决你的问题,请参考以下文章

将大 csv 文件中的小随机样本加载到 R 数据框中

从 csv 文件生成随机样本,同时跳过具有某些值的行

如何将 GCS 中的 csv 随机样本导出到 BigQuery

如何在 python 中的大型数据集上训练随机森林?

从大型数据集中提取唯一数据

如何有效且快速地将大型 (6 Gb) .csv 文件导入 R,而不会导致 R REPL 崩溃?