从R中的大型.CSV导入和提取随机样本
我在R中做一些分析,需要处理一些大型数据集(10-20GB,存储在.csv中,并使用read.csv函数) 由于我还需要将大型.csv文件与其他数据帧合并和转换,因此我没有足够的计算能力或内存导入整个文件 我想知道是否有人知道如何导入csv的随机百分比从R中的大型.CSV导入和提取随机样本,r,csv,import,statistics,subsampling,R,Csv,Import,Statistics,Subsampling,我在R中做一些分析,需要处理一些大型数据集(10-20GB,存储在.csv中,并使用read.csv函数) 由于我还需要将大型.csv文件与其他数据帧合并和转换,因此我没有足够的计算能力或内存导入整个文件 我想知道是否有人知道如何导入csv的随机百分比 我见过一些例子,其中人们导入了整个文件,然后使用单独的函数创建另一个数据帧,该数据帧是原始文件的一个样本,但我希望它的强度稍低一些。我认为没有一个好的R工具可以随机读取文件(它可能是一个扩展名read.table或fread(data.table
我见过一些例子,其中人们导入了整个文件,然后使用单独的函数创建另一个数据帧,该数据帧是原始文件的一个样本,但我希望它的强度稍低一些。我认为没有一个好的R工具可以随机读取文件(它可能是一个扩展名
read.table
或fread
(data.table包))
使用perl
可以轻松完成此任务。例如,要以随机方式读取文件的1%,可以执行以下操作:
xx= system(paste("perl -ne 'print if (rand() < .01)'",big_file),intern=TRUE)
我认为你应该把你的数据放在数据库中。这可能很有用。我同时使用Mac(约塞米蒂)和PC(Windows 7)。一个选择可能是使用unix命令行工具,如
awk
,这里有一个很好的讨论:一旦你用awk
采样,然后读入R.运行命令“perl-ne”print if(rand()<0.04)“train.csv”的状态为255
read_partial_rand <-
function(big_file,percent){
cmd <- paste0("perl -ne 'print if (rand() < ",percent,")'")
cmd <- paste(cmd,big_file)
system(cmd,intern=TRUE)
}