我有一个700mb .dta Stata文件,包含2800万个观测值和14个列变量
当我尝试使用foreign's read.dta()函数导入R时,我的8GB计算机上的RAM耗尽(页面输出很快就会显示为GB)。
staph <- read.dta("Staph_1999_2010.dta")
我在周围寻找,听起来更有效的替代方法是使用memisc package中的Stata.file()函数。
我打电话的时候:
staph <- Stata.file("Staph_1999_2010.dta")
我得到了段错误:
*** caught segfault ***
address 0xd5d2b920, cause 'memory not mapped'
Traceback:
1: .Call("dta_read_labels", bf, lbllen, padding)
2: dta.read.labels(bf, len.lbl, 3)
3: get.dictionary.dta(dta)
4: Stata.file("Staph_1999_2010.dta")
我发现Stata.file()的文档难以理解。
(1)我正确使用Stata.file()
吗?
(2)Stata.file()
是否返回像read.dta()那样的数据帧?
(3)如果我正确使用Stata.file()
,我该如何解决我得到的错误?
答案 0 :(得分:0)
通过访问Stata,可以在Stata中将.dta导出为.csv。
use "file.dta"
export delimited using "file.csv", replace
然后使用read.csv
或data.table::fread
导入R。
其他想法:
sample
对一些数据进行采样
compress
尝试通过更改类型(而非中)进行无损压缩
确定它会为.csv和R节省很多。)