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

标签 r csv import statistics subsampling

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

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

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

我看过一些示例,其中人们导入了整个文件,然后使用单独的函数来创建另一个数据框,该数据框是原始样本的样本,但是我希望能少一些密集度。

最佳答案

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

使用 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 - 从 R 中的大型 .CSV 导入和提取随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981460/

相关文章:

python - 有没有办法将谷歌云存储中的 csv 文件中的数据加载到 datalab 中的单独变量中?

java - 在 Android studio 中的 Android 项目中添加 jar 文件的问题

sql - 在 PostgreSQL 上捕获已删除的行

r - 我为什么会得到“position_dodge需要恒定宽度”,即使在ggplot2中宽度不变

r - 如何使用facet_wrap从行更改为列主要顺序?

从字符串中删除两个字符

python - 组合两个for循环以提高效率

R data.table 获取 by block 的索引

java - 删除将 csv 中的值分组在一起的双引号

php - 如何将mysql表作为数组传递给javascript