2012-04-17 5 views
5

Ich verwende das R Paket WDI, das den Import von Weltbankdaten über ihre API ermöglicht. Das Problem ist, dass ich alle Länder in einer Region, z. Subsahara-Afrika. Allerdings muss ich dafür so viele Länder angeben (SSH ist momentan 49).Importieren von Weltbankdaten für alle Länder in einer Region mit dem WDI-Paket

Am Anfang ist dies ineffizient, vor allem wenn man bedenkt, dass der Datenexplorer auf data.worldbank.org die Auswahl einer Region ermöglicht.

Das eigentliche Problem ist jedoch, dass die Anzahl der Länder problematisch wird (ich vermute) die Weltbank-API, weil eine zu große Anzahl von Ländern einen HTTP-Fehler gibt. Das verursacht, dass ich die Anfrage in zwei Teile teilen muss.

Wenn jedoch der effizientere ALL Wert verwendet wird, gibt es keinen Fehler, obwohl die Anzahl der Beobachtungen viel höher ist.

Im Moment sieht mein Code wie folgt aus:

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) 

ich versucht habe SSH als Ländercode verwenden, aber das gibt ein Aggregat aller SSH Länder, anstatt alle Beobachtungen.

Irgendwelche Ideen?

Antwort

9

Sie können die Daten für alle Länder herunterladen und die Region verwenden, um die Ergebnisse zu filtern.

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

Vielen Dank! Wenn jemand anderes das verwenden möchte, können Sie die zusätzlichen Spalten löschen: 'd <- Teilmenge (d, wählen = c (" Land "," Jahr ", Indikatoren))' –

Verwandte Themen