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

问题描述 投票:4回答:1

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

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

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

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

r csv import statistics subsampling
1个回答
6
投票

我认为没有一个好的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)
  }
© www.soinside.com 2019 - 2024. All rights reserved.