小编Sco*_*ert的帖子

大数据集的ivot_wider替代方案

我有一个需要整理的大型数据集(35.8 GB,超过 10 亿行)。

这是一些可重现的代码来显示其格式。

id <- c(1, 1, 2, 2)
item <- c("a1", "a2", "a1", "a2")
itemformat <- c("AA", "AB", "BB", "AB")
full <- cbind(id, item, itemformat)
full <- as.data.table(full)
full
Run Code Online (Sandbox Code Playgroud)

此代码适用于此示例:

full2 <- full %>% 
  pivot_wider(names_from = item, values_from = itemformat)
full2
Run Code Online (Sandbox Code Playgroud)

然而,当在海量数据集上使用此方法时,R 要么说大小为 3.8 GB 的向量太大(我重新启动 R 并使用 gc() 函数),要么直接崩溃(工作超过 30 分钟后)。

我注意到data.table包中的fread()fwrite()比我使用过的其他任何东西(例如read.csv()read_csv() )要快得多。

那么,有没有一种方法(也许是根据data.table包?)将这些数据重新排列为大约 800,000 列?

另外,800,000 列是否超出某种限制?

整理完毕后,文件大小应该会减小(希望如此)。

旁注:我有 64 GB 的 RAM。

谢谢你!

r tidyr

7
推荐指数
2
解决办法
727
查看次数

标签 统计

r ×1

tidyr ×1