--- title: "Intro to the unvotes package" author: "David Robinson" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{The unvotes package} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ```{r echo = FALSE} 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](http://www.un.org/en/ga/), 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: ```{r} 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: ```{r} un_roll_calls ``` Finally, the `un_roll_call_issues` dataset shows relationships betwen each vote and 6 issues: ```{r} 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: ```{r joined} 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: ```{r by_country_year, dependson = "joined"} 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: ```{r by_country_year_plot, dependson = "by_country_year"} 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: ```{r issue_plot, dependson = "joined", fig.height = 8, fig.width = 8} 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) ```