Skip to content

favstats/tariffs_data

Repository files navigation

Retaliatory Tariffs

Fabio Votta

Packages and Folders

# Install these packages if you don't have theme yet # devtools::install_github("favstats/tidytemplate") # install.packages("pacman") pacman::p_load(tidyverse, httr, janitor, ggpmisc, urbnmapr, glue, ggthemes, tidytemplate, cowplot, ggpubr) # Creates folders # tidytemplate::data_dir() # tidytemplate::images_dir() options(scipen = 1)

Load Data

Note: Changes to County Data

https://www.economy.com/support/blog/buffet.aspx?did=50094FC4-C32C-4CCA-862A-264BC890E13B

Wade Hampton Census Area, Alaska (02-270) Changed name and code to Kusilvak Census Area (02-158) effective July 1, 2015.

Oglala Lakota County, South Dakota (46-102) Changed name and code from Shannon County (46-113) effective May 1, 2015.

Bedford + Bedford City changed to Bedford County

FIPS Modifications:

https://apps.bea.gov/regional/xls/FIPSModifications.xlsx

## County Retaliation Data county_retaliation <- tidytemplate::load_it("data/county_retaliation.Rdata") %>% mutate(c_fips_lgc_ = ifelse(nchar(c_fips_lgc_) == 4, paste0(0, c_fips_lgc_), c_fips_lgc_)) %>% mutate(c_fips_lgc_ = case_when( ## Wade Hampton Census Area changed to Kusilvak Census Area c_fips_lgc_ == "02270" ~ "02158", ## Shannon County to Oglala Lakota County c_fips_lgc_ == "46113" ~ "46102", ## Bedford + Bedford City changed to Bedford County c_fips_lgc_ == "51909" ~ "51019", T ~ c_fips_lgc_ )) ## Bea Codes bea_codes <- tidytemplate::load_it("data/bea_codes2.Rdata") %>% mutate(bea_codes = as.character(bea_codes)) %>% mutate(county_fips = as.character(county_fips)) %>% select(bea_codes, county_fips) beas <- county_retaliation %>% #filter(c_fips_lgc_ == "15901") inner_join(bea_codes, by = c("c_fips_lgc_" = "bea_codes")) %>% select(-c_fips_lgc_) ## Election Data elec2016_url<- "https://github.com/tonmcg/US_County_Level_Election_Results_08-16/raw/master/2016_US_County_Level_Presidential_Results.csv" elec2016 <- readr::read_csv(elec2016_url) %>% mutate(combined_fips = ifelse(nchar(combined_fips) == 4, paste0(0, combined_fips), combined_fips)) %>% rename(county_fips = combined_fips) %>% select(-county_name) %>% mutate(county_fips = case_when( ## Wade Hampton Census Area changed to Kusilvak Census Area county_fips == "02270" ~ "02158", ## Shannon County to Oglala Lakota County county_fips == "46113" ~ "46102", ## Bedford + Bedford City changed to Bedford County county_fips == "51909" ~ "51019", T ~ county_fips ))
## Warning: Missing column names filled in: 'X1' [1] ## Parsed with column specification: ## cols( ## X1 = col_integer(), ## votes_dem = col_double(), ## votes_gop = col_double(), ## total_votes = col_double(), ## per_dem = col_double(), ## per_gop = col_double(), ## diff = col_number(), ## per_point_diff = col_character(), ## state_abbr = col_character(), ## county_name = col_character(), ## combined_fips = col_integer() ## ) 

Combining

retaliation_dat <- county_retaliation %>% rename(county_fips = c_fips_lgc_) %>% bind_rows(beas) %>% inner_join(elec2016) %>% mutate(voteshare = per_gop - per_dem)
## Joining, by = "county_fips" 
tidytemplate::save_it(retaliation_dat)

Scatterplot

formula <- y ~ poly(x, 1, raw = TRUE) scatter_plot <- retaliation_dat %>% mutate(per_gop = 100 * per_gop) %>% mutate(share_ret_xjd = 100 * share_ret_xjd) %>% # ggplot(aes(voteshare)) +geom_histogram() ggplot(aes(per_gop, share_ret_xjd)) + geom_point(aes(color = h_label_lgc_lgm_lgh_, shape = h_label_lgc_lgm_lgh_), alpha = 0.5) + geom_smooth(method = "lm", formula = formula, color = "black") + stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~~")), formula = formula, parse = TRUE, size = 5) + theme_minimal() + scale_color_manual("County Type", values = ggthemes::colorblind_pal()(5)[c(2,4)]) + scale_shape("County Type") + labs(x = "Trump Vote Share in %\n", y = "Share of total export-supported jobs under retaliation in %\n", title = "Trump Vote Share associated with Exposure to Retaliatory Tariffs", subtitle = "2017 Share of export-supported Jobs in Industries targeted by Partner's Retaliation\nby County Vote Share in the 2016 U.S. Presidential Election\n", caption = "Source: Data compiled by Brookings (Census, BEA, BLS, IRS, EIA, Eurostat, Moody's Analytics,\nNAFSA, PIIE, Sabre, and Trade Map, International Trade Centre, www.intracen.org/marketanalysis)\n\nData Visualization by favstats.eu; @favstats") + theme( plot.title = element_text(size = 18, face = "bold"), plot.subtitle = element_text(size = 14, face = "italic"), strip.text = element_text(size = 16, face = "bold"), plot.caption = element_text(size = 10, hjust = 0.9), legend.justification = c(1, 0), legend.position = c(0.98, 0.05), legend.background = element_rect(fill = "lightgrey"), legend.title = element_text(size = 10), axis.title = element_text(size = 12, face = "bold"), #axis.ticks.length = unit(3, "cm"), legend.direction = "vertical") + facet_wrap(~h_label_lgc_lgm_lgh_) + ggpubr::stat_cor(label.y = 23) scatter_plot

ggsave_it(scatter_plot, width = 12, height = 8)

Boxplot

boxes <- retaliation_dat %>% mutate(per_gop = 100 * per_gop) %>% mutate(per_dem = 100 * per_dem) %>% mutate(share_ret_xjd = 100 * share_ret_xjd) %>% mutate(win = case_when( per_gop > per_dem ~ "Trump Won", per_dem > per_gop ~ "Clinton Won")) %>% ggplot(aes(win, share_ret_xjd, color = win)) + geom_violin(aes(fill = win), alpha = 0.1) + geom_boxplot(width = 0.2) + facet_wrap(~h_label_lgc_lgm_lgh_) + theme_minimal() + scale_color_manual(values = c("#0015BC", "#E9141D")) + scale_fill_manual(values = c("#0015BC", "#E9141D")) + guides(color = F, fill = F) + labs(x = "", y = "Share of total export-supported jobs under retaliation in %\n", title = "Counties that voted for Trump more exposed to Retaliatory Tariffs", subtitle = "2017 Share of export-supported Jobs in Industries targeted by Partner's Retaliation\nby County Vote Share in the 2016 U.S. Presidential Election\n", caption = "Source: Data compiled by Brookings (Census, BEA, BLS, IRS, EIA, Eurostat, Moody's Analytics,\nNAFSA, PIIE, Sabre, and Trade Map, International Trade Centre, www.intracen.org/marketanalysis)\n\nData Visualization by favstats.eu; @favstats") + theme( plot.title = element_text(size = 18, face = "bold"), plot.subtitle = element_text(size = 14, face = "italic"), strip.text = element_text(size = 16, face = "bold"), plot.caption = element_text(size = 10, hjust = 0.9), legend.justification = c(1, 0), legend.position = c(0.98, 0.05), legend.background = element_rect(fill = "lightgrey"), legend.title = element_text(size = 10), axis.title = element_text(size = 12, face = "bold"), #axis.ticks.length = unit(3, "cm"), legend.direction = "vertical") + stat_compare_means() boxes

ggsave_it(boxes, width = 12, height = 8)

Mapping

share_ret_xn_plot <- retaliation_dat %>% mutate(trump_win = ifelse(per_gop >= .5, "Win", "Lost")) %>% mutate(per_gop = 100 * per_gop) %>% mutate(per_dem = 100 * per_dem) %>% mutate(share_ret_xjd = 100 * share_ret_xjd) %>% mutate(voteshare = per_gop - per_dem) %>% inner_join(urbnmapr::counties) %>% ggplot(aes(long, lat, group = group, fill = voteshare, alpha = share_ret_xjd)) + geom_polygon(color = "white", size = 0.05) + coord_map() + theme_map() + scale_fill_gradient2("", low = "#0015BC", mid = "lightgrey", high = "#E9141D", labels = c("+50% Trump", "+50% Clinton"), breaks = c(50, -50) ) + scale_alpha("", labels = paste0(seq(5, 25, 5), "%"), breaks = seq(5, 25, 5)) + theme( plot.title = element_text(size = 18, face = "bold", hjust = 0), plot.subtitle = element_text(size = 14, face = "italic", hjust = 0), plot.caption = element_text(size = 10, hjust = 0.1), legend.justification = c(0, 0.5), legend.position = c(0.86, 0.33), plot.margin=unit(c(0,0,0,0),"mm"), legend.title.align = 0.5, legend.title = element_text(size = 10) ) + guides( fill = guide_colorbar( barwidth = 1.05, barheight = 6,#8,  title.position = "bottom", legend.direction = "vertical", label.theme = element_text(colour = "black", size = 9, angle = 0)), alpha = guide_legend( title.position = "right", title.hjust = 1, direction = "vertical", label.theme = element_text(colour = "black", size = 9, angle = 0)) ) + labs(x = "", y = "", title = "Counties that voted for Trump most exposed to Retaliatory Tariffs", subtitle = "2017 Share of export-supported Jobs in Industries targeted by Partner's Retaliation\nby County Vote Share in the 2016 U.S. Presidential Election", caption = "\nSource: Data compiled by Brookings (Census, BEA, BLS, IRS, EIA, Eurostat, Moody's Analytics,\nNAFSA, PIIE, Sabre, and Trade Map, International Trade Centre, www.intracen.org/marketanalysis)\n\nData Visualization by favstats.eu; @favstats\n") + annotate(geom = "text", x = -80, y = 21.3,#,24.3 label = "Share of total export-supported Jobs under Retaliation") + annotate(geom = "text", x = -77, y = 48.5, label = "Darker shaded Counties correspond to greater % of\nexport-supported Jobs under Retaliation") 
## Joining, by = "county_fips" 
 # xlim(-124, -60)  # ylim(30, 49.38436) share_ret_xn_plot

ggsave_it(share_ret_xn_plot, width = 12, height = 9)
cowplot::plot_grid(share_ret_xn_plot, scatter_plot, ncol = 1)

ggsave_it(combined, width = 12, height = 14)
imm_dat <- read_csv2("data/imm_dat.csv") %>% clean_names() %>% mutate(state = state_b05006_2016_5_yr_state) %>% select(county_immigrants, county, total_state_population, state)
## Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control. ## Parsed with column specification: ## cols( ## `Round County Immigrants` = col_number(), ## `Round State Immigrants` = col_number(), ## `County Immigrants` = col_integer(), ## `County name` = col_character(), ## County = col_character(), ## `Anzahl der Datensätze` = col_integer(), ## `Origin (B05006 2016 5 yr (State))` = col_character(), ## `Origin (quickfilter 2)` = col_character(), ## `Origin (tooltip)` = col_character(), ## `Origin (quickfilter)` = col_character(), ## Origin = col_character(), ## `State (B05006 2016 5 yr (State))` = col_character(), ## `State Immigrants` = col_integer(), ## State = col_character(), ## `Total state immigrant population` = col_integer(), ## `Total state population` = col_integer() ## ) 
library(rvest)
## Loading required package: xml2 ## ## Attaching package: 'rvest' ## The following object is masked from 'package:purrr': ## ## pluck ## The following object is masked from 'package:readr': ## ## guess_encoding 
imm_dat <- read_html("https://www.omnisci.com/docs/latest/3_apdx_states.html") %>% html_table() %>% .[[2]] %>% clean_names() %>% left_join(imm_dat) %>% mutate(c_name_lgc_ = paste0(county, " (", abbreviation,")"))
## Joining, by = "state" 
formula <- y ~ poly(x, 15, raw = TRUE) retaliation_dat %>% left_join(imm_dat) %>% # fuzzyjoin::stringdist_left_join(imm_dat) %>%  # filter(is.na(county_fips)) mutate(share_imms = get_percentage(county_immigrants, total_state_population)) %>% mutate(per_gop = 100 * per_gop) %>% mutate(share_ret_xjd = 100 * share_ret_xjd) %>% # ggplot(aes(voteshare)) +geom_histogram() ggplot(aes(share_imms, per_gop)) + geom_point(aes(color = h_label_lgc_lgm_lgh_, shape = h_label_lgc_lgm_lgh_), alpha = 0.5) + # geom_smooth(method = "gam", se = F, color = "black") + # geom_smooth(method = "lm", formula = formula, color = "black") + # stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~~")), # formula = formula, parse = TRUE, size = 5) + theme_minimal() + scale_color_manual("County Type", values = ggthemes::colorblind_pal()(5)[c(2,4)]) + scale_shape("County Type") + labs(x = "Share of Immigrants in %\n", y = "Trump Vote Share in %", title = "Trump Vote Share in 2016 U.S. Election and Share of Immigrants", # subtitle = "2017 Share of export-supported Jobs in Industries targeted by Partner's Retaliation\nby County Vote Share in the 2016 U.S. Presidential Election\n", caption = "Source: U.S. Census Bureau's pooled 2012-2016 American Community Survey taken from Migration Policy Institute") + theme( plot.title = element_text(size = 18, face = "bold"), plot.subtitle = element_text(size = 14, face = "italic"), plot.caption = element_text(size = 10, hjust = 0.9), legend.justification = c(1, 0), legend.position = c(0.98, 0.8), legend.background = element_rect(fill = "lightgrey"), legend.title = element_text(size = 10), axis.title = element_text(size = 12, face = "bold"), #axis.ticks.length = unit(3, "cm"), legend.direction = "vertical") 
## Joining, by = "c_name_lgc_" ## Warning: Column `c_name_lgc_` joining factor and character vector, coercing ## into character vector ## Warning: Removed 65 rows containing missing values (geom_point). 

 # xlim(-124, -60)  # ylim(30, 49.38436) ggsave_it(imm_plot, width = 12, height = 8)
## Warning: Removed 65 rows containing missing values (geom_point). 

About

Analyzing Retaliatory Tariffs of Trump Administration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors