This is my product for final test in the courses.
rm(list = ls()) # remove list before script
# Load packages
library(readr)
library(dplyr)
library(ggplot2)
library(ggthemes)
library(showtext)
library(hrbrthemes)
# Path directory
path1 <- c("C:/Users/Phong Vu/Dropbox/PC/Downloads/r_cased/R15_exam1/globalterrorismdb_0718dist.csv")
# Read data
read.csv(path1) -> terrorism_data
# Note
# - Chart type:
# - Idea:
# - Insight:
# - Data required: x: numeric var.; y: numeric var. and group
# - Function: geom_area()
# # Create data
# time <- as.numeric(rep(seq(1, 7), each =7)) # x axis
# value <- runif(49, 10, 100) # y axis
# group <- rep(LETTERS[1:7], times = 7)
# data <- data.frame(time, value, group)
#
# # Stacked area chart
# ggplot(data, aes(x=time, y=value, fill=group)) +
# geom_area()
# Wrangling and Cleaning
terrorism_data %>%
filter(iyear >= 2000, iyear <= 2014) %>%
select(iyear,
country,
country_txt,
region,
region_txt,
nkill,
nkillter)-> terrorism_data # Select years, from 2000 to 2014 and vars. of interests
coalesce(terrorism_data$nkill, 0) -> nkill_1
coalesce(terrorism_data$nkillter, 0) -> nkillter_1
terrorism_data %>%
mutate(total_kill = nkill_1 + nkillter_1) -> terrorism_data
west_countries <- c("North America", "Western Europe", "Australasia & Oceania")
terrorism_data %>%
filter(region_txt == west_countries) -> west_countries
west_countries %>%
pull(country_txt) -> west_countries_names
terrorism_data %>%
mutate(country_group = case_when(country_txt == "Iraq" ~ "Iraq",
country_txt == "Nigeria" ~ "Nigeria",
country_txt %in% c("Syria","Afghanistan","Pakistan") ~ "Syria, Afghanistan & Pakistan",
country_txt %in% west_countries_names ~ "Western countries",
TRUE ~ "Rest of the world")) -> terrorism_data
terrorism_data %>%
group_by(iyear, country_group) %>%
summarise(death = sum(total_kill/1000)) %>%
ungroup() -> terrorism_data
region_names <- c("Rest of the world","Western countries","Syria, Afghanistan & Pakistan",
"Nigeria","Iraq")
c("2000", "01","02","03","04","05","06","07","08","09","10","11","12","13","14") -> label_on_x
terrorism_data$country_group <- factor(terrorism_data$country_group, levels = region_names)
font_main <- "Ubuntu"
font_add_google(name = font_main, family = font_main)
showtext_auto()
# Visualization
ggplot(terrorism_data, aes(x = iyear, y = death, fill = country_group)) +
geom_area() +
scale_fill_manual(values = c("Rest of the world" = "#00a4dc",
"Western countries" = "#00526d",
"Syria, Afghanistan & Pakistan" = "#7b2713",
"Nigeria" = "#eca288",
"Iraq" = "#f15a40"))+
labs(title = " Global deaths from terrorism",
subtitle = " '000",
caption = "Source: START, IEP",
x = NULL, y = NULL) +
theme(axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_text(hjust = c(0, 0.5, 0.5, 0.5, 1), size = 20),
axis.text.y = element_text(size = 20),
legend.position = c(0.18, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 20),
legend.key.height = unit(10, "pt"),
legend.key.width = unit(20, "pt"),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.y = element_line(color = "grey", size = 1),
panel.background = element_rect(fill = "white"),
plot.background = element_rect(fill = "white")) +
scale_x_continuous(breaks = 2000:2014, labels = label_on_x, expand = c(0, 1)) +
scale_y_continuous(breaks = seq(0, 50, 5), expand = c(0, 0), position = "right") +
guides(fill = guide_legend(reverse = TRUE))+
theme(plot.title = element_text(size = 40, face = "bold"))+
theme(plot.subtitle = element_text(colour = "grey30",size = 20, hjust = 0))+
theme(plot.caption = element_text(color = "grey30",size = 20,hjust = 0))
LS0tDQp0aXRsZTogIkRhdGEgVmlzdWFsaXphdGlvbiB3aXRoIFI6IEZpbmFsIFRlc3QiDQphdXRob3I6ICJEb2FuIE1hbmggRHVjIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCiAgICB0aGVtZTogZmxhdGx5DQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6IHllcw0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQ0KYGBgDQpUaGlzIGlzIG15IHByb2R1Y3QgZm9yIGZpbmFsIHRlc3QgaW4gdGhlIGNvdXJzZXMuDQoNCmBgYHtyIGNhcnN9DQpybShsaXN0ID0gbHMoKSkgIyByZW1vdmUgbGlzdCBiZWZvcmUgc2NyaXB0DQoNCiMgTG9hZCBwYWNrYWdlcw0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGdndGhlbWVzKQ0KbGlicmFyeShzaG93dGV4dCkNCmxpYnJhcnkoaHJicnRoZW1lcykNCg0KIyBQYXRoIGRpcmVjdG9yeQ0KcGF0aDEgPC0gYygiQzovVXNlcnMvUGhvbmcgVnUvRHJvcGJveC9QQy9Eb3dubG9hZHMvcl9jYXNlZC9SMTVfZXhhbTEvZ2xvYmFsdGVycm9yaXNtZGJfMDcxOGRpc3QuY3N2IikNCg0KIyBSZWFkIGRhdGENCnJlYWQuY3N2KHBhdGgxKSAtPiB0ZXJyb3Jpc21fZGF0YQ0KDQojIE5vdGUNCiMgLSBDaGFydCB0eXBlOiANCiMgLSBJZGVhOg0KIyAtIEluc2lnaHQ6IA0KIyAtIERhdGEgcmVxdWlyZWQ6IHg6IG51bWVyaWMgdmFyLjsgeTogbnVtZXJpYyB2YXIuIGFuZCBncm91cA0KIyAtIEZ1bmN0aW9uOiBnZW9tX2FyZWEoKQ0KIyAjIENyZWF0ZSBkYXRhDQojIHRpbWUgPC0gYXMubnVtZXJpYyhyZXAoc2VxKDEsIDcpLCBlYWNoID03KSkgIyB4IGF4aXMNCiMgdmFsdWUgPC0gcnVuaWYoNDksIDEwLCAxMDApICMgeSBheGlzDQojIGdyb3VwIDwtIHJlcChMRVRURVJTWzE6N10sIHRpbWVzID0gNykNCiMgZGF0YSA8LSBkYXRhLmZyYW1lKHRpbWUsIHZhbHVlLCBncm91cCkNCiMgDQojICMgU3RhY2tlZCBhcmVhIGNoYXJ0DQojIGdncGxvdChkYXRhLCBhZXMoeD10aW1lLCB5PXZhbHVlLCBmaWxsPWdyb3VwKSkgKw0KIyAgIGdlb21fYXJlYSgpDQoNCiMgV3JhbmdsaW5nIGFuZCBDbGVhbmluZw0KdGVycm9yaXNtX2RhdGEgJT4lDQogIGZpbHRlcihpeWVhciA+PSAyMDAwLCBpeWVhciA8PSAyMDE0KSAgJT4lDQogIHNlbGVjdChpeWVhciwNCiAgICAgICAgIGNvdW50cnksDQogICAgICAgICBjb3VudHJ5X3R4dCwNCiAgICAgICAgIHJlZ2lvbiwNCiAgICAgICAgIHJlZ2lvbl90eHQsDQogICAgICAgICBua2lsbCwNCiAgICAgICAgIG5raWxsdGVyKS0+IHRlcnJvcmlzbV9kYXRhICMgU2VsZWN0IHllYXJzLCBmcm9tIDIwMDAgdG8gMjAxNCBhbmQgdmFycy4gb2YgaW50ZXJlc3RzDQoNCmNvYWxlc2NlKHRlcnJvcmlzbV9kYXRhJG5raWxsLCAwKSAtPiBua2lsbF8xDQpjb2FsZXNjZSh0ZXJyb3Jpc21fZGF0YSRua2lsbHRlciwgMCkgLT4gbmtpbGx0ZXJfMQ0KDQp0ZXJyb3Jpc21fZGF0YSAlPiUgDQogIG11dGF0ZSh0b3RhbF9raWxsID0gbmtpbGxfMSArIG5raWxsdGVyXzEpIC0+IHRlcnJvcmlzbV9kYXRhDQoNCndlc3RfY291bnRyaWVzIDwtIGMoIk5vcnRoIEFtZXJpY2EiLCAiV2VzdGVybiBFdXJvcGUiLCAiQXVzdHJhbGFzaWEgJiBPY2VhbmlhIikNCg0KdGVycm9yaXNtX2RhdGEgJT4lIA0KICBmaWx0ZXIocmVnaW9uX3R4dCA9PSB3ZXN0X2NvdW50cmllcykgLT4gd2VzdF9jb3VudHJpZXMNCg0Kd2VzdF9jb3VudHJpZXMgJT4lIA0KICBwdWxsKGNvdW50cnlfdHh0KSAtPiB3ZXN0X2NvdW50cmllc19uYW1lcw0KDQp0ZXJyb3Jpc21fZGF0YSAlPiUgDQogIG11dGF0ZShjb3VudHJ5X2dyb3VwID0gY2FzZV93aGVuKGNvdW50cnlfdHh0ID09ICJJcmFxIiB+ICJJcmFxIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV90eHQgPT0gIk5pZ2VyaWEiIH4gIk5pZ2VyaWEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5X3R4dCAlaW4lIGMoIlN5cmlhIiwiQWZnaGFuaXN0YW4iLCJQYWtpc3RhbiIpIH4gIlN5cmlhLCBBZmdoYW5pc3RhbiAmIFBha2lzdGFuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV90eHQgJWluJSB3ZXN0X2NvdW50cmllc19uYW1lcyB+ICJXZXN0ZXJuIGNvdW50cmllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiUmVzdCBvZiB0aGUgd29ybGQiKSkgLT4gdGVycm9yaXNtX2RhdGENCg0KdGVycm9yaXNtX2RhdGEgJT4lIA0KICBncm91cF9ieShpeWVhciwgY291bnRyeV9ncm91cCkgJT4lIA0KICBzdW1tYXJpc2UoZGVhdGggPSBzdW0odG90YWxfa2lsbC8xMDAwKSkgJT4lIA0KICB1bmdyb3VwKCkgLT4gdGVycm9yaXNtX2RhdGENCg0KcmVnaW9uX25hbWVzIDwtIGMoIlJlc3Qgb2YgdGhlIHdvcmxkIiwiV2VzdGVybiBjb3VudHJpZXMiLCJTeXJpYSwgQWZnaGFuaXN0YW4gJiBQYWtpc3RhbiIsDQogICAgICAgICAgICAgICAgICAiTmlnZXJpYSIsIklyYXEiKQ0KDQpjKCIyMDAwIiwgIjAxIiwiMDIiLCIwMyIsIjA0IiwiMDUiLCIwNiIsIjA3IiwiMDgiLCIwOSIsIjEwIiwiMTEiLCIxMiIsIjEzIiwiMTQiKSAtPiBsYWJlbF9vbl94DQoNCnRlcnJvcmlzbV9kYXRhJGNvdW50cnlfZ3JvdXAgPC0gZmFjdG9yKHRlcnJvcmlzbV9kYXRhJGNvdW50cnlfZ3JvdXAsIGxldmVscyA9IHJlZ2lvbl9uYW1lcykNCg0KZm9udF9tYWluIDwtICJVYnVudHUiDQoNCmZvbnRfYWRkX2dvb2dsZShuYW1lID0gZm9udF9tYWluLCBmYW1pbHkgPSBmb250X21haW4pDQoNCnNob3d0ZXh0X2F1dG8oKQ0KDQojIFZpc3VhbGl6YXRpb24NCmdncGxvdCh0ZXJyb3Jpc21fZGF0YSwgYWVzKHggPSBpeWVhciwgeSA9IGRlYXRoLCBmaWxsID0gY291bnRyeV9ncm91cCkpICsNCiAgZ2VvbV9hcmVhKCkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJSZXN0IG9mIHRoZSB3b3JsZCIgPSAiIzAwYTRkYyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3Rlcm4gY291bnRyaWVzIiA9ICIjMDA1MjZkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3lyaWEsIEFmZ2hhbmlzdGFuICYgUGFraXN0YW4iID0gIiM3YjI3MTMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOaWdlcmlhIiA9ICIjZWNhMjg4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXJhcSIgPSAiI2YxNWE0MCIpKSsNCiAgbGFicyh0aXRsZSA9ICIgR2xvYmFsIGRlYXRocyBmcm9tIHRlcnJvcmlzbSIsDQogICAgICAgc3VidGl0bGUgPSAiICAnMDAwIiwNCiAgICAgICBjYXB0aW9uID0gIlNvdXJjZTogU1RBUlQsIElFUCIsDQogICAgICAgeCA9IE5VTEwsIHkgPSBOVUxMKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gYygwLCAwLjUsIDAuNSwgMC41LCAxKSwgc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjE4LCAwLjgpLA0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGxlZ2VuZC5rZXkuaGVpZ2h0ID0gdW5pdCgxMCwgInB0IiksDQogICAgICAgIGxlZ2VuZC5rZXkud2lkdGggPSB1bml0KDIwLCAicHQiKSwNCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyZXkiLCBzaXplID0gMSksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIpLA0KICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIpKSArDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAyMDAwOjIwMTQsIGxhYmVscyA9IGxhYmVsX29uX3gsIGV4cGFuZCA9IGMoMCwgMSkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA1MCwgNSksIGV4cGFuZCA9IGMoMCwgMCksIHBvc2l0aW9uID0gInJpZ2h0IikgKw0KICBndWlkZXMoZmlsbCA9IGd1aWRlX2xlZ2VuZChyZXZlcnNlID0gVFJVRSkpKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA0MCwgZmFjZSA9ICJib2xkIikpKw0KICB0aGVtZShwbG90LnN1YnRpdGxlICA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiZ3JleTMwIixzaXplID0gMjAsIGhqdXN0ID0gMCkpKw0KICB0aGVtZShwbG90LmNhcHRpb24gID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyZXkzMCIsc2l6ZSA9IDIwLGhqdXN0ID0gMCkpDQpgYGA=