我需要每天使用较小的数据框(b)多次更新大型数据框(a)。两个数据帧共享相同数量的变量和相同的列类结构。唯一的区别是观测数量和观测结果本身。我在这个网站上花了好几个小时,其他人试图找出解决方案。我终于得到merge()
来处理小数据帧(每次观察96个变量的313个)。
merge(a,b,all=T)
然而,当我尝试在我的大数据框架上运行相同的操作时(大约150万个96个变量的观察值),我得到了
错误:无法分配大小为1.6 Gb的矢量。
根据Windows任务管理器,我有~12 Gb的可用物理内存。我从gc()
函数开始,以确保我有尽可能多的内存,但它仍然无法工作。还有另一个函数可以简单地将观察结果添加到现有数据框中吗?我尝试了其他几个,但结果不是具有相同结构的数据框。
如果你不能告诉我,我是R(和这个论坛)的新手。我开始学习Stata,并且有人说服我在我太深之前搬到R.在Stata,这是一个简单的操作
clear
use a
append using b
在Stata中完成工作没有任何问题,而且很快(不到几秒钟)。
有人可以帮忙吗? 谢谢!
答案 0 :(得分:0)
请参阅此问题的答案:R: how to rbind two huge data-frames without running out of memory
如果数据在SQLite数据库中,则可以使用sqldf包。否则,您应该考虑使用data.table包。
答案 1 :(得分:0)
我最终选择了一个相对简单的解决方案,将较大的数据帧分解为几个较小的数据帧,并使用了rbind(a,b)
。虽然这需要一些额外的代码来处理新的数据结构,但它允许我使用更小的数据帧,并通过在不需要时删除所有无关的数据来加快处理时间。