【发布时间】:2016-12-13 17:17:17
【问题描述】:
我有一个 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 来处理该文件。
【问题讨论】:
-
如果您对 python 感到满意,您可以将您的 dta 文件转换为 csv 文件。 SO链接Convert Stata .dta file to CSV without Stata software在其中一个答案(不是最佳答案)中描述了这一点。
-
如果你有足够的内存,
foreign::read.dta()应该可以工作,但它不适用于最新的 stata 格式。 -
也许我应该更好地表达:目标是使用 R 并快速完成。 Read.dta 非常慢,我希望避免将文件转换为 .csv。
-
仍然可以想象
dta->csv->data.table将是您最快的选择(尽管我希望不是)。如果我是你,我会查看library(sos); findFn("stata dta")的结果并在合理的(1GB?)大小子集上进行基准测试。
标签: r memory stata large-files