将数据帧中的观察结果添加到R中更大的数据帧中

时间:2014-10-21 00:17:24

标签: r merge dataframe append

我需要每天使用较小的数据框(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中完成工作没有任何问题,而且很快(不到几秒钟)。

有人可以帮忙吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

请参阅此问题的答案:R: how to rbind two huge data-frames without running out of memory

如果数据在SQLite数据库中,则可以使用sqldf包。否则,您应该考虑使用data.table包。

答案 1 :(得分:0)

我最终选择了一个相对简单的解决方案,将较大的数据帧分解为几个较小的数据帧,并使用了rbind(a,b)。虽然这需要一些额外的代码来处理新的数据结构,但它允许我使用更小的数据帧,并通过在不需要时删除所有无关的数据来加快处理时间。