Packages và dữ liệu
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.6 ✓ dplyr 1.0.8
## ✓ tidyr 1.2.0 ✓ stringr 1.4.0
## ✓ readr 2.1.1 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
femployment <- read_xlsx("./data.xlsx", sheet = 1)
f2020 <- read_xlsx("./data.xlsx", sheet = 2)
f2019 <- read_xlsx("./data.xlsx", sheet = 3)
vn_map <- sf::st_read(link2)
## Reading layer `OGRGeoJSON' from data source
## `https://data.opendevelopmentmekong.net/dataset/999c96d8-fae0-4b82-9a2b-e481f6f50e12/resource/2818c2c5-e9c3-440b-a9b8-3029d7298065/download/diaphantinhenglish.geojson?fbclid=IwAR1coUVLkuEoJRsgaH81q6ocz1nVeGBirqpKRBN8WWxXQIJREUL1buFi1eE'
## using driver `GeoJSON'
## Simple feature collection with 63 features and 2 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 102.1421 ymin: 6.953306 xmax: 116.9473 ymax: 23.3939
## Geodetic CRS: WGS 84
vn_map <- vn_map %>%
left_join(femployment, by = c("Name" = "province1"))
vn_map <- vn_map %>%
mutate_at(
vars(as.character(2016:2020)),
.funs = ~cut(
.x,
breaks=c(-Inf, 100, 1000, 5000, 10000, 15000, 20000, Inf),
labels=c("< 100","100-1000", "1000-5000", "5000-10000", "10000-15000", "15000-20000", "> 20000"),
ordered_result = T
)
)
heatmap <- function(data, year) {
ggplot() +
geom_sf(data = vn_map, aes(fill = get(year)), colour = "#3a3a3a", size = 0.1) +
labs(title = paste("Phân bổ lao động nước ngoài tại Việt Nam", year)) +
# scale_fill_gradient(low = "white", high = "#124B92") +
guides(fill = guide_legend(title = "Lao động")) +
scale_fill_brewer(palette = 9, drop = F) +
theme_void(base_size = 8)
}
Phân bổ lao động nước ngoài năm 2016
heatmap(vn_map, "2016")
Phân bổ lao động nước ngoài năm 2017
heatmap(vn_map, "2017")
Phân bổ lao động nước ngoài năm 2018
heatmap(vn_map, "2018")
Phân bổ lao động nước ngoài năm 2019
heatmap(vn_map, "2019")
Phân bổ lao động nước ngoài năm 2020
heatmap(vn_map, "2020")
Lao động nước ngoài qua các năm có sự tăng dần về số lao động hơn vào 2 thành phố lớn là Hà Nội ở phía bắc và TP. Hồ Chí Minh ở phía nam. Chứng tỏ, các thành phố lớn thu hút nguồn lao động nước ngoài (phù hợp với kết quả của bài nghiên cứu tham khảo)
Ngoài ra, thấy được lao động nước ngoài năm 2020 giảm so với năm 2019 (có thể nguyên nhân do Covid-19)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
f2020 %>%
group_by(region) %>%
summarise_at(
vars(europe, asia, africa, america, oceania),
.funs = ~sum(.x, na.rm = T)
) %>%
mutate(
region = factor(region, levels = 1:6, labels = c(
"Đồng Bằng Sông Hồng",
"Tây Bắc và Đông Bắc Bộ",
"Bắc Trung Bộ và Duyên Hải Nam Trung Bộ",
"Tây Nguyên",
"Đông Nam Bộ, Miền Đông",
"Đồng Bằng Sông Cửu Long"
)
)
) %>%
adorn_totals("row", name = "Tổng") %>%
adorn_totals("col", name = "Tổng") %>%
kbl(caption = "Lao động nước ngoài ở Việt Nam phân theo quốc tịch năm 2020") %>%
kable_classic() %>%
row_spec(c(0, 7), bold = T)
| region | europe | asia | africa | america | oceania | Tổng |
|---|---|---|---|---|---|---|
| Đồng Bằng Sông Hồng | 2108 | 19656 | 873 | 941 | 228 | 23806 |
| Tây Bắc và Đông Bắc Bộ | 62 | 9116 | 122 | 21 | 70 | 9391 |
| Bắc Trung Bộ và Duyên Hải Nam Trung Bộ | 895 | 7032 | 394 | 384 | 166 | 8871 |
| Tây Nguyên | 52 | 199 | 35 | 41 | 5 | 332 |
| Đông Nam Bộ, Miền Đông | 3996 | 36172 | 669 | 2245 | 707 | 43789 |
| Đồng Bằng Sông Cửu Long | 279 | 9606 | 40 | 87 | 47 | 10059 |
| Tổng | 7392 | 81781 | 2133 | 3719 | 1223 | 96248 |
Hầu hết các lao động nước ngoài đến Việt Nam chủ yếu là Châu Á, sau đó là Châu Âu và Châu Mỹ
Khu vực “Đông Nam Bộ, Miền Đòng” có nhiều lao động nước ngoài nhất, xếp sau đó là khu vực “Đồng Bằng Sông Hồng”
f2019 %>%
group_by(region) %>%
summarise_at(
vars(manager, ceo, specialist, technician, other),
.funs = ~sum(.x, na.rm = T)
) %>%
mutate(
region = factor(region, levels = 1:6, labels = c(
"Đồng Bằng Sông Hồng",
"Tây Bắc và Đông Bắc Bộ",
"Bắc Trung Bộ và Duyên Hải Nam Trung Bộ",
"Tây Nguyên",
"Đông Nam Bộ, Miền Đông",
"Đồng Bằng Sông Cửu Long"
)
)
) %>%
adorn_totals("row", name = "Tổng") %>%
adorn_totals("col", name = "Tổng") %>%
kbl(caption = "Lao động nước ngoài phân theo vị trí công việc năm 2019") %>%
kable_classic() %>%
row_spec(c(0, 7), bold = T)
| region | manager | ceo | specialist | technician | other | Tổng |
|---|---|---|---|---|---|---|
| Đồng Bằng Sông Hồng | 4673 | 4439 | 16310 | 9973 | 0 | 35395 |
| Tây Bắc và Đông Bắc Bộ | 788 | 839 | 2606 | 1921 | 0 | 6154 |
| Bắc Trung Bộ và Duyên Hải Nam Trung Bộ | 1097 | 789 | 4343 | 4835 | 0 | 11064 |
| Tây Nguyên | 93 | 30 | 228 | 74 | 0 | 425 |
| Đông Nam Bộ, Miền Đông | 6851 | 3450 | 36444 | 7762 | 0 | 54507 |
| Đồng Bằng Sông Cửu Long | 633 | 852 | 6736 | 1993 | 0 | 10214 |
| Tổng | 14135 | 10399 | 66667 | 26558 | 0 | 117759 |
f2020 %>%
group_by(region) %>%
summarise_at(
vars(manager, ceo, specialist, technician, other),
.funs = ~sum(.x, na.rm = T)
) %>%
mutate(
region = factor(region, levels = 1:6, labels = c(
"Đồng Bằng Sông Hồng",
"Tây Bắc và Đông Bắc Bộ",
"Bắc Trung Bộ và Duyên Hải Nam Trung Bộ",
"Tây Nguyên",
"Đông Nam Bộ, Miền Đông",
"Đồng Bằng Sông Cửu Long"
)
)
) %>%
adorn_totals("row", name = "Tổng") %>%
adorn_totals("col", name = "Tổng") %>%
kbl(caption = "Lao động nước ngoài phân theo vị trí công việc năm 2019") %>%
kable_classic() %>%
row_spec(c(0, 7), bold = T)
| region | manager | ceo | specialist | technician | other | Tổng |
|---|---|---|---|---|---|---|
| Đồng Bằng Sông Hồng | 3840 | 2948 | 12990 | 3975 | 53 | 23806 |
| Tây Bắc và Đông Bắc Bộ | 872 | 889 | 4053 | 3476 | 0 | 9290 |
| Bắc Trung Bộ và Duyên Hải Nam Trung Bộ | 942 | 818 | 4204 | 2871 | 0 | 8835 |
| Tây Nguyên | 91 | 19 | 238 | 64 | 0 | 412 |
| Đông Nam Bộ, Miền Đông | 3780 | 2654 | 33119 | 4206 | 0 | 43759 |
| Đồng Bằng Sông Cửu Long | 569 | 938 | 6323 | 2065 | 0 | 9895 |
| Tổng | 10094 | 8266 | 60927 | 16657 | 53 | 95997 |
library(ggcorrplot)
f2020 %>%
select(-province, -pcode, -region, -femployment_2020, -female) %>%
mutate_all(
.funs = ~ifelse(is.na(.x), 0, .x)
) %>%
cor() %>%
as.data.frame() %>%
select(-(1:5)) %>%
.[-(6:10), ] %>%
as.matrix() %>%
ggcorrplot(
lab = TRUE,
lab_col = "#3a3a3a"
) +
scale_fill_gradient2(
breaks=c(0, 1),
limit=c(0, 1),
low = "white",
high = "#124B92"
) +
guides(fill = guide_colorbar(title = "Corr")) +
ggtitle("Ma trận hệ số tương quan giữa vị trí công việc và quốc tịch")
## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.