我有一个需要整理的大型数据集(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。
谢谢你!