我试图用5000多个变量在stata
和R
中读取大小为320 MB的stata
文件。我首先使用stata
来读取文件,但是它可以读取的最大变量是5000。所以,我不能使用stata来读取stata
文件。我的问题是:
stata
读取stata
文件的方法,首先要求只保留变量(我知道变量),以便变量数小于5000个?stata
中读取这个R
文件吗?我正在使用32位(Vista),而R
给了我错误。"Error: cannot allocate vector of size 21k.Kb"
。我使用以下R代码读取该文件:
#The stata file is in the webpage: http://www.federalreserve.gov/econresdata/scf/scf_2010survey.htm#STATADAT
#1. set mem 400m
set maxvar 4000
use p10i6.dta, clear
keep x8166 x8167 x8168 x8163 x8164 x2422 x2506 x2606 x2623 x604 x614 x623 x716 x507 x513 x526 x1706 x1705 x1806 x1805 x1906 x1905 x2002 x2012 x1409 x1509 x1609 x1415 x1515 x1615 x1417 x1517 x1617 x1619 x1621 x3124 x3224 x3324 x3129 x3229 x3329 x3335 x3408 x3412 x3416 x3420 x3424 x3428 x4020 x4024 x4028 x4018 x4022 x4026 x4030 x4022 x4026 x4030 x4018 x3507 x3511 x3515 x3519 x3523 x3527 x3506 x3510 x3514 x3518 x3522 x3526 x3529 x3804 x3807 x3810 x3813 x3816 x3818 x3930 x3721 x3821 x3823 x3825 x3827 x3829 x3822 x3824 x3826 x3828 x3830
save p10i6.dta, clear
#2.
library (foreign)
year<-2010
yr <- substr( year , 3 , 4 )
p10i6.dta<-read.dta(paste0( "p" , yr , "i6.dta" ))
saveRDS(p10i6.dta,file=paste0( "p" , yr , "i6.rda" ))
p10i6.rda<-readRDS(paste0( "p" , yr , "i6.rda" ))
发布于 2013-01-18 14:40:32
我猜想你有一个StataIC或一个旧版本的斯塔塔。当前的Stata/SE和Stata/MP可以读取多达32.000多个变量。因此,第一个逻辑步骤是将Stata升级到一个可以处理较大数据集的版本。如果问题不是因为缺乏可用的内存,那就是.因此,Stata的错误信息将是有帮助的。
正如Richard Herron在注释中已经说过的那样,您应该能够使用以下方法读取数据的子集:
use X8166 X8167 ... using p10i6, clear
记住Stata是区分大小写的。根据链接到的网站,这些变量被称为X...
而不是x...
。
如果您想使用foreign
包将数据加载到R中,请确保将R可用的内存设置为在Vista上的R上的最大可用内存,大约为3.5Gb:
memory.limit(3500)
如果这没有帮助,您的数据集将太大,您可以使用任何来自Stata或R的ASCII方法来加载在网站上提供的ASCII数据。
发布于 2013-01-18 20:15:09
要将数据读取到R中,可能有一种使用memisc
包Stata.file
函数的方法。不要读取所有变量,而是选择需要使用子集的变量。例如:
require(memisc)
?Stata.file
d1 <- subset(
Stata.file(paste0( "p" , yr , "i6.dta" )),
select=c(x8166, x2606, x2623, x604)
)
https://stackoverflow.com/questions/14400318
复制相似问题