Bước 1: Nhập file vào R

/Users/vinhnguyen/Library/CloudStorage/OneDrive-danangcity/DAU-NCKH/ĐỀ TÀI CẤP TRƯỜNG 2025-CĐR/codebook_JD.xlsx

library(readxl)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
codebook <- read_excel("/Users/vinhnguyen/Library/CloudStorage/OneDrive-danangcity/DAU-NCKH/ĐỀ TÀI CẤP TRƯỜNG 2025-CĐR/codebook_JD.xlsx")
head(codebook)
## # A tibble: 6 × 115
##   `Nhóm Năng lực (Themes)` Code  Nodes JD_001 JD_002 JD_003 JD_004 JD_005 JD_006
##   <chr>                    <chr> <chr>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 [RQ2] Năng lực Truyền t… TR01  Nghi…      0      0      1      0      0      0
## 2 [RQ2] Năng lực Truyền t… TR02  Nghi…      0      1      0      0      1      1
## 3 [RQ2] Năng lực Truyền t… TR03  Nghi…      0      0      0      0      0      0
## 4 [RQ2] Năng lực Truyền t… TR04  Nghi…      0      1      0      0      0      0
## 5 [RQ2] Năng lực Truyền t… TR05  Giao…      1      1      1      0      1      1
## 6 [RQ2] Năng lực Truyền t… TR06  Làm …      1      1      1      1      1      1
## # ℹ 106 more variables: JD_007 <dbl>, JD_008 <dbl>, JD_009 <dbl>, JD_010 <dbl>,
## #   JD_011 <dbl>, JD_012 <dbl>, JD_013 <dbl>, JD_014 <dbl>, JD_015 <dbl>,
## #   JD_016 <dbl>, JD_017 <dbl>, JD_018 <dbl>, JD_019 <dbl>, JD_020 <dbl>,
## #   JD_021 <dbl>, JD_022 <dbl>, JD_023 <dbl>, JD_024 <dbl>, JD_025 <dbl>,
## #   JD_026 <dbl>, JD_027 <dbl>, JD_028 <dbl>, JD_029 <dbl>, JD_030 <dbl>,
## #   JD_031 <dbl>, JD_032 <dbl>, JD_033 <dbl>, JD_034 <dbl>, JD_035 <dbl>,
## #   JD_036 <dbl>, JD_037 <dbl>, JD_038 <dbl>, JD_039 <dbl>, JD_040 <dbl>, …

Bước 2: Chuẩn hoá tên cột

colnames(codebook)
##   [1] "Nhóm Năng lực (Themes)" "Code"                   "Nodes"                 
##   [4] "JD_001"                 "JD_002"                 "JD_003"                
##   [7] "JD_004"                 "JD_005"                 "JD_006"                
##  [10] "JD_007"                 "JD_008"                 "JD_009"                
##  [13] "JD_010"                 "JD_011"                 "JD_012"                
##  [16] "JD_013"                 "JD_014"                 "JD_015"                
##  [19] "JD_016"                 "JD_017"                 "JD_018"                
##  [22] "JD_019"                 "JD_020"                 "JD_021"                
##  [25] "JD_022"                 "JD_023"                 "JD_024"                
##  [28] "JD_025"                 "JD_026"                 "JD_027"                
##  [31] "JD_028"                 "JD_029"                 "JD_030"                
##  [34] "JD_031"                 "JD_032"                 "JD_033"                
##  [37] "JD_034"                 "JD_035"                 "JD_036"                
##  [40] "JD_037"                 "JD_038"                 "JD_039"                
##  [43] "JD_040"                 "JD_041"                 "JD_042"                
##  [46] "JD_043"                 "JD_044"                 "JD_045"                
##  [49] "JD_046"                 "JD_047"                 "JD_048"                
##  [52] "JD_049"                 "JD_050"                 "JD_051"                
##  [55] "JD_052"                 "JD_053"                 "JD_054"                
##  [58] "JD_055"                 "JD_056"                 "JD_057"                
##  [61] "JD_058"                 "JD_059"                 "JD_060"                
##  [64] "JD_061"                 "JD_062"                 "JD_063"                
##  [67] "JD_064"                 "JD_065"                 "JD_066"                
##  [70] "JD_067"                 "JD_068"                 "JD_069"                
##  [73] "JD_070"                 "JD_071"                 "JD_072"                
##  [76] "JD_073"                 "JD_074"                 "JD_075"                
##  [79] "JD_076"                 "JD_077"                 "JD_078"                
##  [82] "JD_079"                 "JD_080"                 "JD_081"                
##  [85] "JD_082"                 "JD_083"                 "JD_084"                
##  [88] "JD_085"                 "JD_086"                 "JD_087"                
##  [91] "JD_088"                 "JD_089"                 "JD_090"                
##  [94] "JD_091"                 "JD_092"                 "JD_093"                
##  [97] "JD_094"                 "JD_095"                 "JD_096"                
## [100] "JD_097"                 "JD_098"                 "JD_099"                
## [103] "JD_100"                 "JD_101"                 "JD_102"                
## [106] "JD_103"                 "JD_104"                 "JD_105"                
## [109] "JD_106"                 "JD_107"                 "JD_108"                
## [112] "JD_109"                 "JD_110"                 "Frequency"             
## [115] "Percentage%"
jd_cols <- grep("^JD_", colnames(codebook), value = TRUE)
codebook <- codebook %>%
  mutate(Freq_check = rowSums(select(., all_of(jd_cols))))
sum(codebook$Freq_check == codebook$Frequency)
## [1] 26

TÍNH IDI

codebook <- codebook %>%
  mutate(IDI = Freq_check)

PHÂN TÂNG NHU CẦU

codebook <- codebook %>%
  mutate(Level = case_when(
    IDI >= 66 ~ "High",
    IDI >= 33 ~ "Medium",
    TRUE ~ "Low"
  ))

MAP NHÓM (TR – ST – ES – IN)

codebook <- codebook %>%
  mutate(Group = case_when(
    startsWith(Code, "TR") ~ "TR – Năng lực nghề",
    startsWith(Code, "ST") ~ "ST – Công nghệ",
    startsWith(Code, "ES") ~ "ESG – Bền vững",
    startsWith(Code, "IN") ~ "IN – Điều kiện đầu vào"
  ))

TẠO DATA FINAL CHUẨN

final_table <- codebook %>%
  select(Code, Nodes, IDI, Level, Group)
final_table
## # A tibble: 26 × 5
##    Code  Nodes                                               IDI Level  Group   
##    <chr> <chr>                                             <dbl> <chr>  <chr>   
##  1 TR01  Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)               44 Medium TR – Nă…
##  2 TR02  Nghiệp vụ Ẩm thực & Pha chế (F&B)                    25 Low    TR – Nă…
##  3 TR03  Nghiệp vụ Buồng phòng & Không gian công cộng (HK)    17 Low    TR – Nă…
##  4 TR04  Nghiệp vụ Kinh doanh & Sự kiện (Sales/MICE)          14 Low    TR – Nă…
##  5 TR05  Giao tiếp, Đàm phán & Lắng nghe                      94 High   TR – Nă…
##  6 TR06  Làm việc nhóm & Phối hợp liên bộ phận                94 High   TR – Nă…
##  7 TR07  Giải quyết vấn đề & Linh hoạt                        74 High   TR – Nă…
##  8 TR08  Giám sát, Đào tạo & Tổ chức công việc                31 Low    TR – Nă…
##  9 TR09  Lập kế hoạch & Quản trị doanh thu/chi phí            20 Low    TR – Nă…
## 10 TR10  Định hướng khách hàng & Tinh thần phục vụ            94 High   TR – Nă…
## # ℹ 16 more rows

#TRỰC QUAN HOÁ

#1.Vẽ biểu đồ Lollipop chart

ggplot(codebook,
       aes(x = reorder(Nodes, IDI),
           y = IDI,
           color = Group)) +
  geom_point(size = 3) +
  geom_segment(aes(xend = Nodes, y = 0, yend = IDI)) +
  coord_flip()

#2.Biểu đồ Level (RẤT QUAN TRỌNG)

ggplot(codebook,
       aes(x = reorder(Nodes, IDI),
           y = IDI,
           fill = Level)) +
  geom_col() +
  coord_flip()

#3.VẼ BIỂU ĐỒ CHO TỪNG NĂNG LỰC CỤ THÊ:

codebook <- codebook %>%
  mutate(Group = case_when(
    startsWith(Code, "TR") ~ "TR – Năng lực nghề",
    startsWith(Code, "ST") ~ "ST – Công nghệ",
    startsWith(Code, "ES") ~ "ESG – Bền vững",
    startsWith(Code, "IN") ~ "IN – Điều kiện đầu vào"
  ))

##3.1. Năng lực TR

TR_data <- codebook %>%
  filter(Group == "TR – Năng lực nghề")

ggplot(TR_data,
       aes(x = reorder(Nodes, IDI), y = IDI)) +
  geom_col(fill = "#9C4ECC") +
  coord_flip() +
  labs(
    title = "Mức độ nhu cầu năng lực – Nhóm TR (Năng lực nghề nghiệp)",
    x = "Năng lực",
    y = "IDI (số tin tuyển dụng)"
  ) +
  theme_minimal()

##3.2. Năng lực ST

ST_data <- codebook %>%
  filter(Group == "ST – Công nghệ")

ggplot(ST_data,
       aes(x = reorder(Nodes, IDI), y = IDI)) +
  geom_col(fill = "#17A2B8") +
  coord_flip() +
  labs(
    title = "Mức độ nhu cầu năng lực – Nhóm ST (Công nghệ & Số hóa)",
    x = "Năng lực",
    y = "IDI (số tin tuyển dụng)"
  ) +
  theme_minimal()

##3.3. Năng lực ESG

ES_data <- codebook %>%
  filter(Group == "ESG – Bền vững")

ggplot(ES_data,
       aes(x = reorder(Nodes, IDI), y = IDI)) +
  geom_col(fill = "#E63946") +
  coord_flip() +
  labs(
    title = "Mức độ nhu cầu năng lực – Nhóm ESG & Phát triển bền vững",
    x = "Năng lực",
    y = "IDI (số tin tuyển dụng)"
  ) +
  theme_minimal()

##3.4. Điều kiện đầu vào IN

IN_data <- codebook %>%
  filter(Group == "IN – Điều kiện đầu vào")

ggplot(IN_data,
       aes(x = reorder(Nodes, IDI), y = IDI)) +
  geom_col(fill = "#2CA02C") +
  coord_flip() +
  labs(
    title = "Yêu cầu đầu vào trong tuyển dụng – Nhóm IN",
    x = "Yêu cầu",
    y = "IDI (số tin tuyển dụng)"
  ) +
  theme_minimal()

ggsave("TR_chart.png", width = 8, height = 6)
ggsave("ST_chart.png", width = 8, height = 6)
ggsave("ESG_chart.png", width = 8, height = 6)
ggsave("IN_chart.png", width = 8, height = 6)

#.BIỂU ĐỒ 1 – PHÂN TẦNG NHU CẦU (BẮT BUỘC)

ggplot(codebook,
       aes(x = reorder(Nodes, IDI),
           y = IDI,
           fill = Level)) +
  geom_col() +
  coord_flip() +
  labs(title = "Phân tầng mức độ nhu cầu năng lực (IDA Level)",
       fill = "Mức độ nhu cầu")

#.BIỂU ĐỒ 2 – PHÂN BỐ IDI THEO NHÓM (RẤT NÊN CÓ)

ggplot(codebook,
       aes(x = IDI,
           fill = Group)) +
  geom_histogram(binwidth = 10, alpha = 0.6, position = "identity") +
  labs(title = "Phân bố IDI theo nhóm năng lực")

#.BIỂU ĐỒ NÂNG CAO (TÙY CHỌN – KHÔNG BẮT BUỘC) ##.Heatmap IDI (rất mạnh nếu muốn nâng level)

ggplot(codebook,
       aes(x = Group,
           y = reorder(Nodes, IDI),
           fill = IDI)) +
  geom_tile() +
  scale_fill_gradient(low = "white", high = "blue")

##.Boxplot theo nhóm

ggplot(codebook,
       aes(x = Group, y = IDI)) +
  geom_boxplot()

#.LƯU FILE

pdf("All_Group_Charts.pdf", width = 10, height = 7)

print(
  ggplot(TR_data, aes(x = reorder(Nodes, IDI), y = IDI)) +
    geom_col(fill = "#9C4ECC") + coord_flip()
)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Kinh doanh & Sự kiện (Sales/MICE)' in
## 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Kinh doanh & Sự kiện (Sales/MICE)' in
## 'mbcsToSbcs': for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Kinh doanh & Sự kiện (Sales/MICE)' in
## 'mbcsToSbcs': for ự (U+1EF1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Kinh doanh & Sự kiện (Sales/MICE)' in
## 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Buồng phòng & Không gian công cộng (HK)' in
## 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Buồng phòng & Không gian công cộng (HK)' in
## 'mbcsToSbcs': for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Buồng phòng & Không gian công cộng (HK)' in
## 'mbcsToSbcs': for ồ (U+1ED3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Buồng phòng & Không gian công cộng (HK)' in
## 'mbcsToSbcs': for ộ (U+1ED9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Lập kế hoạch & Quản trị doanh thu/chi phí' in
## 'mbcsToSbcs': for ậ (U+1EAD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Lập kế hoạch & Quản trị doanh thu/chi phí' in
## 'mbcsToSbcs': for ế (U+1EBF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Lập kế hoạch & Quản trị doanh thu/chi phí' in
## 'mbcsToSbcs': for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Lập kế hoạch & Quản trị doanh thu/chi phí' in
## 'mbcsToSbcs': for ả (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Lập kế hoạch & Quản trị doanh thu/chi phí' in
## 'mbcsToSbcs': for ị (U+1ECB)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Chịu áp lực & Quản lý thời gian' in 'mbcsToSbcs': for ị
## (U+1ECB)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Chịu áp lực & Quản lý thời gian' in 'mbcsToSbcs': for ự
## (U+1EF1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Chịu áp lực & Quản lý thời gian' in 'mbcsToSbcs': for ả
## (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Chịu áp lực & Quản lý thời gian' in 'mbcsToSbcs': for ờ
## (U+1EDD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Ẩm thực & Pha chế (F&B)' in 'mbcsToSbcs': for
## ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Ẩm thực & Pha chế (F&B)' in 'mbcsToSbcs': for
## ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Ẩm thực & Pha chế (F&B)' in 'mbcsToSbcs': for
## Ẩ (U+1EA8)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Ẩm thực & Pha chế (F&B)' in 'mbcsToSbcs': for
## ự (U+1EF1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Ẩm thực & Pha chế (F&B)' in 'mbcsToSbcs': for
## ế (U+1EBF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giám sát, Đào tạo & Tổ chức công việc' in 'mbcsToSbcs':
## for Đ (U+0110)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giám sát, Đào tạo & Tổ chức công việc' in 'mbcsToSbcs':
## for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giám sát, Đào tạo & Tổ chức công việc' in 'mbcsToSbcs':
## for ổ (U+1ED5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giám sát, Đào tạo & Tổ chức công việc' in 'mbcsToSbcs':
## for ứ (U+1EE9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giám sát, Đào tạo & Tổ chức công việc' in 'mbcsToSbcs':
## for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for Đ (U+0110)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for đ (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for ứ (U+1EE9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tác phong chuyên nghiệp & Đạo đức nghề' in 'mbcsToSbcs':
## for ề (U+1EC1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)' in 'mbcsToSbcs':
## for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)' in 'mbcsToSbcs':
## for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)' in 'mbcsToSbcs':
## for ề (U+1EC1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)' in 'mbcsToSbcs':
## for ả (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Nghiệp vụ Tiền sảnh & Chăm sóc KH (FO)' in 'mbcsToSbcs':
## for ă (U+0103)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for ả
## (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for ế
## (U+1EBF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for ấ
## (U+1EA5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for đ
## (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for ề
## (U+1EC1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giải quyết vấn đề & Linh hoạt' in 'mbcsToSbcs': for ạ
## (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for Đ (U+0110)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ị (U+1ECB)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ư (U+01B0)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ớ (U+1EDB)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ầ (U+1EA7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Định hướng khách hàng & Tinh thần phục vụ' in
## 'mbcsToSbcs': for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giao tiếp, Đàm phán & Lắng nghe' in 'mbcsToSbcs': for ế
## (U+1EBF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giao tiếp, Đàm phán & Lắng nghe' in 'mbcsToSbcs': for Đ
## (U+0110)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Giao tiếp, Đàm phán & Lắng nghe' in 'mbcsToSbcs': for ắ
## (U+1EAF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Làm việc nhóm & Phối hợp liên bộ phận' in 'mbcsToSbcs':
## for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Làm việc nhóm & Phối hợp liên bộ phận' in 'mbcsToSbcs':
## for ố (U+1ED1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Làm việc nhóm & Phối hợp liên bộ phận' in 'mbcsToSbcs':
## for ợ (U+1EE3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Làm việc nhóm & Phối hợp liên bộ phận' in 'mbcsToSbcs':
## for ộ (U+1ED9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Làm việc nhóm & Phối hợp liên bộ phận' in 'mbcsToSbcs':
## for ậ (U+1EAD)
print(
  ggplot(ST_data, aes(x = reorder(Nodes, IDI), y = IDI)) +
    geom_col(fill = "#17A2B8") + coord_flip()
)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ư
## (U+01B0)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ơ
## (U+01A1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ệ
## (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ố
## (U+1ED1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ự
## (U+1EF1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for đ
## (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tương tác AI & Hệ thống tự động' in 'mbcsToSbcs': for ộ
## (U+1ED9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ỹ (U+1EF9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ậ (U+1EAD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ố (U+1ED1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ư (U+01B0)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ơ (U+01A1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for đ (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Marketing kỹ thuật số và thương mại điện tử' in
## 'mbcsToSbcs': for ử (U+1EED)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Phân tích dữ liệu & Báo cáo' in 'mbcsToSbcs': for ữ
## (U+1EEF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Phân tích dữ liệu & Báo cáo' in 'mbcsToSbcs': for ệ
## (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vận hành hệ thống quản lý (PMS/POS/CRM)' in
## 'mbcsToSbcs': for ậ (U+1EAD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vận hành hệ thống quản lý (PMS/POS/CRM)' in
## 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vận hành hệ thống quản lý (PMS/POS/CRM)' in
## 'mbcsToSbcs': for ố (U+1ED1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vận hành hệ thống quản lý (PMS/POS/CRM)' in
## 'mbcsToSbcs': for ả (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tin học văn phòng & tác vụ hệ thống' in 'mbcsToSbcs':
## for ọ (U+1ECD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tin học văn phòng & tác vụ hệ thống' in 'mbcsToSbcs':
## for ă (U+0103)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tin học văn phòng & tác vụ hệ thống' in 'mbcsToSbcs':
## for ụ (U+1EE5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tin học văn phòng & tác vụ hệ thống' in 'mbcsToSbcs':
## for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Tin học văn phòng & tác vụ hệ thống' in 'mbcsToSbcs':
## for ố (U+1ED1)
print(
  ggplot(ES_data, aes(x = reorder(Nodes, IDI), y = IDI)) +
    geom_col(fill = "#E63946") + coord_flip()
)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'ESG & Khách sạn xanh' in 'mbcsToSbcs': for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ả (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ậ (U+1EAD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ỹ (U+1EF9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ậ (U+1EAD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ơ (U+01A1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Quản lý tài nguyên & vận hành kỹ thuật cơ bản' in
## 'mbcsToSbcs': for ả (U+1EA3)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vệ sinh an toàn thực phẩm (HACCP)' in 'mbcsToSbcs': for
## ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vệ sinh an toàn thực phẩm (HACCP)' in 'mbcsToSbcs': for
## ự (U+1EF1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Vệ sinh an toàn thực phẩm (HACCP)' in 'mbcsToSbcs': for
## ẩ (U+1EA9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'An toàn lao động & An ninh' in 'mbcsToSbcs': for đ
## (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'An toàn lao động & An ninh' in 'mbcsToSbcs': for ộ
## (U+1ED9)
print(
  ggplot(IN_data, aes(x = reorder(Nodes, IDI), y = IDI)) +
    geom_col(fill = "#2CA02C") + coord_flip()
)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ thứ 2' in 'mbcsToSbcs': for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ thứ 2' in 'mbcsToSbcs': for ữ (U+1EEF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ thứ 2' in 'mbcsToSbcs': for ứ (U+1EE9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Sức khỏe & Thích nghi ca kíp' in 'mbcsToSbcs': for ứ
## (U+1EE9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Sức khỏe & Thích nghi ca kíp' in 'mbcsToSbcs': for ỏ
## (U+1ECF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ - Tiếng Anh' in 'mbcsToSbcs': for ạ (U+1EA1)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ - Tiếng Anh' in 'mbcsToSbcs': for ữ (U+1EEF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Ngoại ngữ - Tiếng Anh' in 'mbcsToSbcs': for ế (U+1EBF)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Trình độ học vấn' in 'mbcsToSbcs': for đ (U+0111)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Trình độ học vấn' in 'mbcsToSbcs': for ộ (U+1ED9)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Trình độ học vấn' in 'mbcsToSbcs': for ọ (U+1ECD)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Trình độ học vấn' in 'mbcsToSbcs': for ấ (U+1EA5)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Kinh nghiệm làm việc' in 'mbcsToSbcs': for ệ (U+1EC7)
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on 'Kinh nghiệm làm việc' in 'mbcsToSbcs': for ệ (U+1EC7)
dev.off()
## quartz_off_screen 
##                 2