4

stataサイズが 320 MB でstataR変数が 5000 個を超えるファイルを読み込もうとしています。最初stataにファイルを読み取るために使用しましたが、読み取ることができる最大変数は 5000 です。そのため、stata を使用してstataファイルを読み取ることはできません。私の質問は次のとおりです。

  1. 変数の数が5000未満になるように、最初に変数のみを保持するように要求することでstataファイルを読み取る方法はありますか(私は変数を知っています)?stata

  2. 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" ))
4

2 に答える 2

4

memiscデータを R に読み込むには、 packageStata.file関数を使用してこれを行う方法があるかもしれません。すべての変数を読み込む代わりに、サブセットを使用して必要な変数を選択します。例えば:

require(memisc)

?Stata.file
d1 <- subset(
        Stata.file(paste0( "p" , yr , "i6.dta" )),
        select=c(x8166, x2606, x2623, x604)
    )
于 2013-01-18T20:15:09.253 に答える
3

StataICまたは古いバージョンのStataをお持ちだと思います。現在のStata/SEおよびStata/MPは、最大32.000を超える変数を読み取ることができます。したがって、最初の論理的なステップは、Stataをより大きなデータセットを処理できるバージョンにアップグレードすることです。問題が利用可能なメモリの不足に起因しない場合、つまり...そのためには、Stataのエラーメッセージが役立ちます。

リチャード・ヘロンがコメントですでに述べたように、以下を使用してデータのサブセットを読み取ることができるはずです。

use X8166 X8167 ... using p10i6, clear

Stataでは大文字と小文字が区別されることを忘れないでください。リンク先のWebサイトによると、変数はのX...代わりに呼び出されます。x...

パッケージを使用してデータをRにロードする場合は、Rで使用foreign可能なメモリをRで可能な最大値に設定してください。Vistaでは、約3.5Gbになります。

memory.limit(3500)

それでも問題が解決しない場合は、データセットが大きくなりすぎます。StataまたはRのいずれかのASCIIメソッドを使用して、Webサイトで提供されているASCIIデータをロードできます。

于 2013-01-18T14:40:32.223 に答える