具有海量数据的 CDF

数据挖掘 r 大数据
2022-03-17 14:40:05

我正在尝试绘制我拥有的 7 个文件的 CDF。每个文件如下所示:

1
2
1.5
2.3

等等。问题在于文件的大小,它们是:

862M
1,8G
2,4G
18G
2,0G
1,8G

我已经建立了一个简单的 R 脚本,它只是加载文件并绘制它们。当我生成较小尺寸的假文件时,脚本工作正常。但是,它已经运行了三天,并且没有使用完整文件产生任何输出。

脚本是这样的:

library(ggplot2)    
data <- read.table('file1.csv')
data$g = "G1"
data2 <- read.table('file2.csv')
data2$g = "G2"
data3 <- read.table('file3.csv')
data4$g = "G3"
data4 <- read.table('file4.csv')
data4$g = "G4"
data5 <- read.table('file5.csv')
data5$g = "G5"
data6 <- read.table('file56.csv')
data6$g = "G6"
data7 <- read.table('file7.csv')
data7$g = "G7"

dftotal = rbind(data,data2)
dftotal = rbind(dftotal,data3)
dftotal = rbind(dftotal,data4)
dftotal = rbind(dftotal,data5)
dftotal = rbind(dftotal,data6)
dftotal = rbind(dftotal,data7)

gp <- ggplot(data = dftotal, aes(x = V1), group = factor(g)) + stat_ecdf()
ggsave('cdf.eps',gp)

有谁知道更有效的方法来做到这一点?

2个回答

我的估计是您的数据集中大约有 5.4b 个数字,根据您的评论,所有数字都在 0-50 的范围内。我怀疑在所有数据上执行此操作的方法比您目前所做的要快得多。但是,如果您只是获取每个文件并获取每个文件的 0.1-10% 的随机样本,然后将它们组合起来,您仍然会得到一个视觉上几乎完全相同的 ecdf,同时减少内存问题和必要的计算能力。

如果您只需要每个 bin 的频率,请使用 awk 或用 C 编写程序来计算。执行最多不超过几十分钟。