【发布时间】:2016-05-31 16:49:05
【问题描述】:
我目前正在使用以下代码来合并 >130 个数据帧,并且代码需要花费太多时间来运行(实际上我从未在如此大的数据集上完成,仅在子集上完成)。每个表有两列:unit(字符串)和counts(整数)。我正在按单位合并。
tables <- lapply(files, function(x) read.table(x), col.names=c("unit", x))))
MyMerge <- function(x, y){
df <- merge(x, y, by="unit", all.x= TRUE, all.y= TRUE)
return(df)
}
data <- Reduce(MyMerge, tables)
有什么方法可以轻松加快速度吗?每个表/数据框分别有大约 500,000 行,其中许多行是该表独有的。因此,通过合并多个表,可以快速获得合并数据帧的行数到数百万..
最后,我将从我的大合并表中删除汇总计数过低的行,但我不想在合并期间这样做,因为那时我的文件顺序很重要..
【问题讨论】:
-
查看stackoverflow.com/questions/1299871/… 的一些
data.table解决方案(outer joins)。这可能会更快。 -
谢谢@coffeinjunky。不幸的是,我尝试了基于上述线程的 dplyr 包,但在我的情况下速度较慢。
-
@coffeinjunky 对于较小的数据集之一,我能够从 77 秒缩短到 66 秒。不神奇,但绝对有帮助:)
-
是否需要存储每个数字来自哪个表的结果?还是要在最后汇总?
标签: r performance dataframe merge