knitr::opts_chunk$set(message = FALSE, warning = FALSE,
                      fig.height = 5, fig.width = 5)

This package provides the voting history of countries in the United Nations General Assembly, along with information such as date, description, and topics for each vote.

Datasets

The unvotes contains three datasets, each data frames (specifically tbl_dfs, which are more convenient to print). First is the history of each country's vote. These are represented in the un_votes dataset, with one row for each country/vote pair:

library(dplyr)
library(unvotes)

un_votes

The package also contains a dataset of information about each roll call vote, including the date, description, and relevant resolution that was voted on:

un_roll_calls

Finally, the un_roll_call_issues dataset shows relationships betwen each vote and 6 issues:

un_roll_call_issues

library(dplyr)
count(un_roll_call_issues, issue, sort = TRUE)

(Use help() to get information and documentation about each dataset).

Example analysis

Many useful analyses will first involve joining the vote and roll call datasets by the shared rcid (roll call ID) column:

library(dplyr)

joined <- un_votes %>%
  inner_join(un_roll_calls, by = "rcid")

joined

One could then count how often each country votes "yes" on a resolution in each year:

library(lubridate)

by_country_year <- joined %>%
  group_by(year = year(date), country) %>%
  summarize(votes = n(),
            percent_yes = mean(vote == "yes"))

by_country_year

After which this can be visualized for one or more countries:

library(ggplot2)
theme_set(theme_bw())

countries <- c("United States", "United Kingdom", "India", "France")

# there were fewer votes in 2013
by_country_year %>%
  filter(country %in% countries, year <= 2013) %>%
  ggplot(aes(year, percent_yes, color = country)) +
  geom_line() +
  ylab("% of votes that are 'Yes'")

Similarly, we could look at how the voting record of the United States has changed on each of the issues by joining with the un_roll_call_issues dataset:

joined %>%
  filter(country == "United States") %>%
  inner_join(un_roll_call_issues, by = "rcid") %>%
  group_by(year = year(date), issue) %>%
  summarize(votes = n(),
            percent_yes = mean(vote == "yes")) %>%
  filter(votes > 5) %>%
  ggplot(aes(year, percent_yes)) +
  geom_point() +
  geom_smooth(se = FALSE) +
  facet_wrap(~ issue)


dgrtwo/unvotes documentation built on March 15, 2021, 9:07 p.m.