This is my product for homework 2 in this course.
rm(list = ls())
# Loading packages
library(dplyr)
library(readxl)
library(ggplot2)
library(janitor)
library(stringr)
library(stringi)
# Reading data
readxl::read_xlsx("C:/Users/Phong Vu/Dropbox/PC/Downloads/r_cased/R15_day2/_data_pci_file_general_file_1588582407-Indicator_PCI2018_VN.xlsx") -> pci_2018
# Cleaning and Wrangling data
pci_2018 %>%
clean_names() %>%
select(tinh_thanh_pho, xep_hang, diem_so_pci_2018) %>%
slice(-64,-65, -66, -67, -68, -69) %>%
rename(province = tinh_thanh_pho,
rank = xep_hang,
pci = diem_so_pci_2018) -> pci_2018
# Visualization
pci_2018 %>%
mutate(province_rank = case_when(rank < 10 ~ str_c(province, " ", "0", rank),
TRUE ~ str_c(province, " ", rank))) -> pci_2018
pci_2018$pci <- round(pci_2018$pci, 2)
pci_2018 %>%
mutate(class = case_when(pci >= 70 ~ "Excellent",
pci >= 65.40 & pci < 70 ~ "Good",
pci >= 62.40 & pci < 65.40 ~ "Fair",
pci >= 60.02 & pci < 62.40 ~ "Mediore",
pci < 60.02 ~ "Poor")) -> pci_2018
pci_2018 %>%
arrange(pci) %>%
mutate(province_rank_fac = factor(province_rank, levels = province_rank)) -> pci_2018
pci_2018 %>%
mutate(class_color = case_when(class == "Excellent" ~ "#470150",
class == "Good" ~ "#3c558d",
class == "Fair" ~ "#238f89",
class == "Mediore" ~ "#5bc866",
class == "Poor" ~ "#f3e933")) %>%
pull(class_color) -> color_on_class
pci_2018 %>%
ggplot(aes(x = pci, y = province_rank_fac)) +
geom_col(width = 0.8, fill = color_on_class) +
geom_text(aes(label = pci),
size = 1.55,
position = position_dodge(0.5),
hjust = -0.2) +
theme(axis.ticks = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title = element_blank(),
axis.text.y = element_text(size = 4, color = "black"),
axis.text.x = element_blank(),
legend.position = c(0.95, 0.95),
legend.box.just = "right",
panel.border = element_blank(),
panel.background = element_blank(),
plot.title = element_text(face = "bold"),
plot.subtitle = element_text(color = "gray50"),
plot.caption = element_text(color = "gray70", face = "italic")) +
scale_x_continuous(expand = c(0, 0),
breaks = seq(0, 80),
limits = c(0, 80)) +
labs(title = "Vietnam PCI Index 2018",
subtitle = "R Used for Data Visualization",
caption = "Data source: https://pcivietnam.vn/du-lieu-pci")

LS0tDQp0aXRsZTogIkRhdGEgVmlzdWFsaXphdGlvbiB3aXRoIFI6IEhvbWV3b3JrIDIiDQphdXRob3I6ICJEb2FuIE1hbmggRHVjIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCiAgICB0aGVtZTogZmxhdGx5DQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6IHllcw0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQ0KYGBgDQpUaGlzIGlzIG15IHByb2R1Y3QgZm9yIGhvbWV3b3JrIDIgaW4gdGhpcyBjb3Vyc2UuDQoNCmBgYHtyIGNhcnN9DQpybShsaXN0ID0gbHMoKSkNCg0KIyBMb2FkaW5nIHBhY2thZ2VzDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGphbml0b3IpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KHN0cmluZ2kpDQoNCiMgUmVhZGluZyBkYXRhDQpyZWFkeGw6OnJlYWRfeGxzeCgiQzovVXNlcnMvUGhvbmcgVnUvRHJvcGJveC9QQy9Eb3dubG9hZHMvcl9jYXNlZC9SMTVfZGF5Mi9fZGF0YV9wY2lfZmlsZV9nZW5lcmFsX2ZpbGVfMTU4ODU4MjQwNy1JbmRpY2F0b3JfUENJMjAxOF9WTi54bHN4IikgLT4gcGNpXzIwMTgNCg0KIyBDbGVhbmluZyBhbmQgV3JhbmdsaW5nIGRhdGENCnBjaV8yMDE4ICAlPiUgDQogIGNsZWFuX25hbWVzKCkgJT4lIA0KICBzZWxlY3QodGluaF90aGFuaF9waG8sIHhlcF9oYW5nLCBkaWVtX3NvX3BjaV8yMDE4KSAlPiUNCiAgc2xpY2UoLTY0LC02NSwgLTY2LCAtNjcsIC02OCwgLTY5KSAlPiUNCiAgcmVuYW1lKHByb3ZpbmNlID0gdGluaF90aGFuaF9waG8sDQogICAgICAgICByYW5rID0geGVwX2hhbmcsDQogICAgICAgICBwY2kgPSBkaWVtX3NvX3BjaV8yMDE4KSAtPiBwY2lfMjAxOA0KDQojIFZpc3VhbGl6YXRpb24NCnBjaV8yMDE4ICU+JSANCiAgbXV0YXRlKHByb3ZpbmNlX3JhbmsgPSBjYXNlX3doZW4ocmFuayA8IDEwIH4gc3RyX2MocHJvdmluY2UsICIgIiwgIjAiLCByYW5rKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IHN0cl9jKHByb3ZpbmNlLCAiICIsIHJhbmspKSkgLT4gcGNpXzIwMTgNCg0KcGNpXzIwMTgkcGNpIDwtIHJvdW5kKHBjaV8yMDE4JHBjaSwgMikNCg0KcGNpXzIwMTggJT4lIA0KICBtdXRhdGUoY2xhc3MgPSBjYXNlX3doZW4ocGNpID49IDcwIH4gIkV4Y2VsbGVudCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBwY2kgPj0gNjUuNDAgJiBwY2kgPCA3MCB+ICJHb29kIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaSA+PSA2Mi40MCAmIHBjaSA8IDY1LjQwIH4gIkZhaXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpID49IDYwLjAyICYgcGNpIDwgNjIuNDAgfiAiTWVkaW9yZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBwY2kgPCA2MC4wMiB+ICJQb29yIikpIC0+IHBjaV8yMDE4DQoNCnBjaV8yMDE4ICU+JQ0KICBhcnJhbmdlKHBjaSkgJT4lDQogIG11dGF0ZShwcm92aW5jZV9yYW5rX2ZhYyA9IGZhY3Rvcihwcm92aW5jZV9yYW5rLCBsZXZlbHMgPSBwcm92aW5jZV9yYW5rKSkgLT4gcGNpXzIwMTgNCg0KcGNpXzIwMTggJT4lIA0KICBtdXRhdGUoY2xhc3NfY29sb3IgPSBjYXNlX3doZW4oY2xhc3MgPT0gIkV4Y2VsbGVudCIgfiAiIzQ3MDE1MCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT0gIkdvb2QiIH4gIiMzYzU1OGQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT0gIkZhaXIiIH4gIiMyMzhmODkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgPT0gIk1lZGlvcmUiIH4gIiM1YmM4NjYiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzID09ICJQb29yIiB+ICIjZjNlOTMzIikpICU+JSANCiAgcHVsbChjbGFzc19jb2xvcikgLT4gY29sb3Jfb25fY2xhc3MNCg0KcGNpXzIwMTggJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBwY2ksIHkgPSBwcm92aW5jZV9yYW5rX2ZhYykpICsNCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgsIGZpbGwgPSBjb2xvcl9vbl9jbGFzcykgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGNpKSwgDQogICAgICAgICAgICBzaXplID0gMS41NSwgDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuNSksIA0KICAgICAgICAgICAgaGp1c3QgPSAtMC4yKSArDQogIHRoZW1lKGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjk1LCAwLjk1KSwNCiAgICAgICAgbGVnZW5kLmJveC5qdXN0ID0gInJpZ2h0IiwNCiAgICAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyYXk1MCIpLA0KICAgICAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JheTcwIiwgZmFjZSA9ICJpdGFsaWMiKSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSwgDQogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoMCwgODApLCANCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgODApKSArDQogIGxhYnModGl0bGUgPSAiVmlldG5hbSBQQ0kgSW5kZXggMjAxOCIsDQogICAgICAgc3VidGl0bGUgPSAiUiBVc2VkIGZvciBEYXRhIFZpc3VhbGl6YXRpb24iLA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBzb3VyY2U6IGh0dHBzOi8vcGNpdmlldG5hbS52bi9kdS1saWV1LXBjaSIpDQpgYGA=