如何在不耗尽内存的情况下在 R 中对数据帧进行采样

how to sample a data frame in R without exhaust the memory

提问人:mel099 提问时间:8/8/2023 更新时间:8/8/2023 访问量:33

问:

我正在尝试对包含两列的数据帧进行采样,一列是 ID,一列是计数。计数的总和是 10^13,我想将大小采样为 10^12 、10^11 等。但

向量超出了 R 的限制。

如何对此类数据进行采样?

df_random[[i]]= df2  %>%   mutate(ID=factor(ID)) %>%   %>% 
  tidyr::uncount(count) %>%  sample_n(nrow(.))  %>%
  sample_n(size=round(n/fold2),replace = TRUE) %>%   count(ID, name = "value", .drop=FALSE)
}
R 矢量 样本 下采样

评论

1赞 divibisan 8/8/2023
您是否遇到错误,或者您只是内存不足并崩溃?这个问题可能会有所帮助:stackoverflow.com/q/34165654/8366499,或者这个问题:stackoverflow.com/q/21528752/8366499。看一下包装bigmemory
0赞 mel099 8/8/2023
谢谢,我正在寻找它,错误是“向量内存耗尽(达到限制?)”,这是由于向量大小超过 2^31-1 而出现的未计数部分。
1赞 Jon Spring 8/8/2023
从 1 到 10^13 的向量已经占用了 80 TB,因此对于大多数计算机来说,创建整个潜在数据范围即使不是不可能,也是非常低效的。我想去这里会更好。dplyr::slice_sample(weight_by = count)
1赞 Dubukay 8/8/2023
实际上有多少行?你说该列的总和是 10^13,但我假设至少有一些计数> 1。df2
0赞 mel099 8/8/2023
数据中有 300000 行

答: 暂无答案