An open API service indexing awesome lists of open source software.

https://github.com/gshs-ornl/wbstats

wbstats: An R package for searching and downloading data from the World Bank API
https://github.com/gshs-ornl/wbstats

open-data r r-package rstats world-bank world-bank-api worldbank

Last synced: 4 months ago
JSON representation

wbstats: An R package for searching and downloading data from the World Bank API

Awesome Lists containing this project

README

          

---
output:
md_document:
variant: markdown_github
---

```{r, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/"
)
```

# wbstats: An R package for searching and downloading data from the World Bank API

[![CRAN status](https://www.r-pkg.org/badges/version/wbstats)](https://CRAN.R-project.org/package=wbstats)
[![Monthly](https://cranlogs.r-pkg.org/badges/wbstats)](https://CRAN.R-project.org/package=wbstats)
[![Lifecycle: maturing](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://www.tidyverse.org/lifecycle/#maturing)

You can install:

The latest release version from CRAN with
```{r, eval = FALSE}
install.packages("wbstats")
```

or

The latest development version from github with
```{r, eval = FALSE}
remotes::install_github("nset-ornl/wbstats")
```

# Downloading data from the World Bank

```{r readme-download, warning=FALSE}
library(wbstats)

# Population for every country from 1960 until present
d <- wb_data("SP.POP.TOTL")

head(d)
```

## Hans Rosling's Gapminder using `wbstats`

```{r readme-chart, warning=FALSE, message=FALSE, fig.width=12, fig.height=6}
library(tidyverse)
library(wbstats)

my_indicators <- c(
life_exp = "SP.DYN.LE00.IN",
gdp_capita ="NY.GDP.PCAP.CD",
pop = "SP.POP.TOTL"
)

d <- wb_data(my_indicators, start_date = 2016)

d %>%
left_join(wb_countries(), "iso3c") %>%
ggplot() +
geom_point(
aes(
x = gdp_capita,
y = life_exp,
size = pop,
color = region
)
) +
scale_x_continuous(
labels = scales::dollar_format(),
breaks = scales::log_breaks(n = 10)
) +
coord_trans(x = 'log10') +
scale_size_continuous(
labels = scales::number_format(scale = 1/1e6, suffix = "m"),
breaks = seq(1e8,1e9, 2e8),
range = c(1,20)
) +
theme_minimal() +
labs(
title = "An Example of Hans Rosling's Gapminder using wbstats",
x = "GDP per Capita (log scale)",
y = "Life Expectancy at Birth",
size = "Population",
color = NULL,
caption = "Source: World Bank"
)

```

## Using `ggplot2` to map `wbstats` data

```{r ggplot2, fig.height=6, fig.width=8, fig.align="center", message=FALSE, warning=FALSE}
library(rnaturalearth)
library(tidyverse)
library(wbstats)

ind <- "SL.EMP.SELF.ZS"
indicator_info <- filter(wb_cachelist$indicators, indicator_id == ind)

ne_countries(returnclass = "sf") %>%
left_join(
wb_data(
c(self_employed = ind),
mrnev = 1
),
c("iso_a3" = "iso3c")
) %>%
filter(iso_a3 != "ATA") %>% # remove Antarctica
ggplot(aes(fill = self_employed)) +
geom_sf() +
scale_fill_viridis_c(labels = scales::percent_format(scale = 1)) +
theme(legend.position="bottom") +
labs(
title = indicator_info$indicator,
fill = NULL,
caption = paste("Source:", indicator_info$source_org)
)

```