2012-04-17 10 views
5

Rパッケージを使用しており、ワールド銀行データをAPI経由でインポートできます。問題は、地域のすべての国を見ることです。サハラ以南のアフリカ。しかし、このために私は非常に多くの国を指定する必要があります(SSHは現在49です)。WDIパッケージを使用して、地域内のすべての国の世界銀行データをインポートする

これは効率的ではありません。特に、data.worldbank.orgのデータエクスプローラでは、地域を選択できるようになっているためです。

しかし実際の問題は、国の数が多すぎるとHTTPエラーが発生するため、世界銀行APIを扱うには国の数が問題になる(私は推測している)ということです。リクエストを2つに分割する必要があります。

しかし、より効率的なALL値を使用すると、観測数が非常に多いにもかかわらずエラーはありません。

今の私のコードは次のようになります。

library(WDI) 

COUNTRIES1 <- c("AGO","BEN","BWA","BFA","BDI","CMR","CPV","CAF","TCD","COM","ZAR","COG","CIV","GNQ","ERI","ETH","GAB","GMB","GHA","GNB","GIN","KEN","LSO","LBR","MDG") 
COUNTRIES2 <- c("MWI","MLI","MRT","MUS","MYT","MOZ","NAM","NER","NGA","RWA","STP","SEN","SYC","SLE","SOM","ZAF","SSD","SDN","SWZ","TZA","TGO","UGA","ZMB","ZWE") 
INDICATORS <- c("NY.GDP.PCAP.KN", "SP.DYN.TFRT.IN", "SP.POP.TOTL") 

LONG1 <- WDI(country=COUNTRIES1, indicator=INDICATORS, start=1960, end=2009, extra=FALSE) 
LONG2 <- WDI(country=COUNTRIES2, indicator=INDICATORS, start=1960, end=2009, extra=FALSE) 

LONG <- merge(LONG1, LONG2, by=intersect(names(LONG1),names(LONG2)), all=TRUE) 

私は、国コードとしてSSHを使用して試してみましたが、これは、すべてのSSHの国ではなく、すべての観測値の集計を与えます。

アイデアはありますか?

答えて

9

すべての国のデータをダウンロードすることができます。 とRegionを使用して結果をフィルタリングできます。

library(WDI) 
indicators <- c("NY.GDP.PCAP.KN", "SP.DYN.TFRT.IN", "SP.POP.TOTL") 
d <- WDI("all", indicators, extra=TRUE, start=1960, end=2009) 
# Discard unwanted rows 
d <- d[ which(d$Region == "Sub-Saharan Africa"), ] 
# Discard unwanted columns 
d <- d[,1:6] 
head(d) 
+1

ありがとうございます!他の誰かがこれを使いたいと思っている場合は、 'd < - subset(d、select = c(" country "、" year "、indicators))' –

関連する問題