从R中的大型.CSV导入和提取随机样本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从R中的大型.CSV导入和提取随机样本相关的知识,希望对你有一定的参考价值。
我在R中做了一些分析,我需要处理一些大型数据集(10-20GB,存储在.csv中,并使用read.csv函数)。
因为我还需要将大型.csv文件与其他数据帧合并和转换,我没有计算能力或内存来导入整个文件。
我想知道是否有人知道导入随机百分比的csv的方法。
我已经看到一些例子,人们已经导入了整个文件,然后使用一个单独的函数来创建另一个数据框架,这是原始文件的一个样本,但是我希望能有一些不那么密集的东西。
答案
我认为没有一个好的R工具以随机方式读取文件(也许它可以是扩展read.table
或fread
(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导入和提取随机样本的主要内容,如果未能解决你的问题,请参考以下文章