R:如何在没有RAM限制的情况下快速读取大型.dta文件

时间:2016-08-08 02:40:45

标签: r memory stata large-files

我有一个10 GB .dta Stata文件,我试图将其读入64位R 3.3.1。我正在使用大约130 GB RAM(4 TB HD)的虚拟机,.dta文件大约有300万行,大约有400到800个变量。

我知道data.table()是读取.txt和.csv文件的最快方法,但有人建议将大型.dta文件读入R吗?将文件作为.dta文件读入Stata需要大约20-30秒,尽管我需要在打开文件之前设置我的工作内存最大值(我将最大值设置为100 GB)。

我没有尝试在Stata中导入.csv,但我希望避免使用Stata触及该文件。通过Using memisc to import stata .dta file into R找到了解决方案,但这假设RAM很少。在我的情况下,我应该有足够的RAM来处理文件。

2 个答案:

答案 0 :(得分:2)

我推荐haven R package。与foreign不同,它可以读取最新的Stata格式:

library(haven)
data <- read_dta('myfile.dta')

不确定与其他选项相比有多快,但您在R中读取Stata文件的选择相当有限。我的理解是haven包装了一个C库,所以它可能是你最快的选择。

答案 1 :(得分:2)

在R中加载大型Stata数据集的最快方法是使用readstata13包。我在大型数据集in this post上比较了foreignreadstata13haven个包的效果,结果反复显示readstata13是最快的可用包用于读取R中的Stata数据集。