我是R的新手,我目前正在研究数据集(大小:2 GB大小)。我已将此数据集存储在工作空间中,每当我将此数据集加载到R中时,它会消耗超过90%的主内存,因此执行过滤,处理和分析数据等操作变得非常困难且非常耗时。
我主要使用dplyr包根据动态用户输入从主数据集中过滤和形成子集,但是获取数据需要花费大量时间。我也尝试过使用bigmemory包。虽然它解决了内存消耗问题,但它不允许在big.matrix对象上使用dplyr包。
所以有人可以告诉我如何以最佳内存消耗快速过滤大型数据集?
谢谢!
答案 0 :(得分:0)
一种方法可能是在下载时将表截断为所需的列。
<强> 实施例 强>
sample1 <- read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
header=TRUE)
sample2 <- read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
header=TRUE)[, c(1, 3, 5)]
> object.size(sample1)
3272064 bytes
> object.size(sample2)
1073240 bytes
要知道选择哪个,请使用
查阅字母var.names <- names(read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
header=TRUE))
> var.names
[1] "Eldon.Base.for.stackable.storage.shelf..platinum"
[2] "Muhammed.MacIntyre"
[3] "X3"
[4] "X.213.25"
[5] "X38.94"
[6] "X35"
[7] "Nunavut"
[8] "Storage...Organization"
[9] "X0.8"
答案 1 :(得分:0)
我使用过data.table和DT包。使用data.table我创建了一个data.table对象,可以快速访问和分析。使用DT包,我使用了renderDataTable函数在Shiny仪表板上快速获取详细信息。
答案 2 :(得分:0)
我使用过data.table和DT包。使用data.table我创建了一个可以快速访问和分析的data.table对象。使用DT包中的renderDataTable函数,我能够快速在Shiny仪表板上呈现表格。 感谢你的帮助!!