我正在处理一个相对较大的数据集(5 个文件,每个 2GB,为您提供一个数量级的表,其中一个表是 1.5M 行 x 270 列),我使用 dplyr left_joint 函数(在这些数据集和其他小表之间)。这些表包含我不想丢失的字符串数据。然而,使用处理大型数据集的包(如 bigmemory 或 ff)会将字符串转换为因子,然后转换为数字,这意味着数据会丢失。有没有办法在不丢失信息的情况下操纵这些文件(使用我的 8GB RAM)?
问问题
378 次
2 回答
1
当您说使用因子时信息丢失时,我不明白。例如,假设这str
是您的字符串列之一,您可以这样做
str <- sample(sample(letters, replace = TRUE),
size = 1.5e6, replace = TRUE)
tab.str <- sort(unique(str)) # could use `letters` as lookup table
str.int <- match(str, tab.str)
all.equal(tab.str[str.int], str)
所以,基本上你有整数是查找表的索引来取回你的字符串。
但是,如果您使用 big.matrix 格式,您将无法使用dplyr,但我认为针对您的特定情况重新实现左连接会相对容易。
于 2017-04-28T06:48:54.017 回答
0
探索 Data.tables 以在 R 上使用大型数据集进行任何类型的处理。与 R 上的任何其他数据处理包相比,速度和效率是无与伦比的。
于 2017-04-28T07:06:20.753 回答