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.
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
## # A tibble: 869,937 x 4
## rcid country country_code vote
## <dbl> <chr> <chr> <fct>
## 1 3 United States US yes
## 2 3 Canada CA no
## 3 3 Cuba CU yes
## 4 3 Haiti HT yes
## 5 3 Dominican Republic DO yes
## 6 3 Mexico MX yes
## 7 3 Guatemala GT yes
## 8 3 Honduras HN yes
## 9 3 El Salvador SV yes
## 10 3 Nicaragua NI yes
## # … with 869,927 more rows
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
## # A tibble: 6,202 x 9
## rcid session importantvote date unres amend para short descr
## <int> <dbl> <int> <date> <chr> <int> <int> <chr> <chr>
## 1 3 1 0 1946-01-01 R/1/66 1 0 AMENDM… "TO ADOPT …
## 2 4 1 0 1946-01-02 R/1/79 0 0 SECURI… "TO ADOPT …
## 3 5 1 0 1946-01-04 R/1/98 0 0 VOTING… "TO ADOPT …
## 4 6 1 0 1946-01-04 R/1/1… 0 0 DECLAR… "TO ADOPT …
## 5 7 1 0 1946-01-02 R/1/2… 1 0 GENERA… "TO ADOPT …
## 6 8 1 0 1946-01-05 R/1/2… 1 0 ECOSOC… "TO ADOPT …
## 7 9 1 0 1946-02-05 R/1/3… 0 0 POST-W… "TO OPEN T…
## 8 10 1 0 1946-02-05 R/1/3… 1 1 U.N. M… "TO ADOPT …
## 9 11 1 0 1946-02-05 R/1/3… 0 0 TRUSTE… "TO ADOPT …
## 10 12 1 0 1946-02-06 R/1/3… 1 1 COUNCI… "TO ADOPT …
## # … with 6,192 more rows
Finally, the un_roll_call_issues
dataset shows relationships between each vote and 6 issues:
un_roll_call_issues
## # A tibble: 5,745 x 3
## rcid short_name issue
## <int> <chr> <fct>
## 1 77 me Palestinian conflict
## 2 9001 me Palestinian conflict
## 3 9002 me Palestinian conflict
## 4 9003 me Palestinian conflict
## 5 9004 me Palestinian conflict
## 6 9005 me Palestinian conflict
## 7 9006 me Palestinian conflict
## 8 128 me Palestinian conflict
## 9 129 me Palestinian conflict
## 10 130 me Palestinian conflict
## # … with 5,735 more rows
library(dplyr)
count(un_roll_call_issues, issue, sort = TRUE)
## # A tibble: 6 x 2
## issue n
## <fct> <int>
## 1 Arms control and disarmament 1092
## 2 Palestinian conflict 1061
## 3 Human rights 1015
## 4 Colonialism 957
## 5 Nuclear weapons and nuclear material 855
## 6 Economic development 765
(Use help()
to get information and documentation about each dataset).
Many useful analyses will first involve joining the vote and roll call datasets by the shared rcid
(roll call ID) column:
library(dplyr)
<- un_votes %>%
joined inner_join(un_roll_calls, by = "rcid")
joined
## # A tibble: 869,937 x 12
## rcid country country_code vote session importantvote date unres amend
## <dbl> <chr> <chr> <fct> <dbl> <int> <date> <chr> <int>
## 1 3 United… US yes 1 0 1946-01-01 R/1/… 1
## 2 3 Canada CA no 1 0 1946-01-01 R/1/… 1
## 3 3 Cuba CU yes 1 0 1946-01-01 R/1/… 1
## 4 3 Haiti HT yes 1 0 1946-01-01 R/1/… 1
## 5 3 Domini… DO yes 1 0 1946-01-01 R/1/… 1
## 6 3 Mexico MX yes 1 0 1946-01-01 R/1/… 1
## 7 3 Guatem… GT yes 1 0 1946-01-01 R/1/… 1
## 8 3 Hondur… HN yes 1 0 1946-01-01 R/1/… 1
## 9 3 El Sal… SV yes 1 0 1946-01-01 R/1/… 1
## 10 3 Nicara… NI yes 1 0 1946-01-01 R/1/… 1
## # … with 869,927 more rows, and 3 more variables: para <int>, short <chr>,
## # descr <chr>
One could then count how often each country votes “yes” on a resolution in each year:
library(lubridate)
<- joined %>%
by_country_year group_by(year = year(date), country) %>%
summarize(votes = n(),
percent_yes = mean(vote == "yes"))
by_country_year
## # A tibble: 10,461 x 4
## # Groups: year [73]
## year country votes percent_yes
## <dbl> <chr> <int> <dbl>
## 1 1946 Afghanistan 17 0.412
## 2 1946 Argentina 43 0.698
## 3 1946 Australia 43 0.558
## 4 1946 Belarus 43 0.442
## 5 1946 Belgium 43 0.605
## 6 1946 Bolivia 43 0.698
## 7 1946 Brazil 43 0.605
## 8 1946 Canada 42 0.643
## 9 1946 Chile 43 0.605
## 10 1946 Colombia 42 0.310
## # … with 10,451 more rows
After which this can be visualized for one or more countries:
library(ggplot2)
theme_set(theme_bw())
<- c("United States", "United Kingdom", "India", "France")
countries
%>%
by_country_year filter(country %in% countries) %>%
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)