【发布时间】:2014-12-16 02:32:59
【问题描述】:
我需要每天用较小的数据框 (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 中没有任何问题地完成了工作,而且速度很快(不到几秒钟)。
有人可以帮忙吗? 谢谢!
【问题讨论】:
-
尝试使用包
dplyr,使用dplyr:inner_join()。对于大型合并操作,它应该更高效、更快。 -
另外
gc()也不是清除内存的好方法。我建议在尝试进行合并之前重新启动您的 rsession。在进行合并时,还要在 Windows 任务管理器中查看您的内存使用情况。