| Nama Anggota 1 | (NIM) |
| Nama Anggota 2 | (NIM) |
| Nama Anggota 3 | (NIM) |
Kelas: 26
22/09/2026
file_data <- "Tingkat Pengangguran Terbuka Menurut Provinsi, 2026.xlsx"
# Membaca data excel dari BPS (38 provinsi)
data_tpt <- read_excel(
path = file_data,
skip = 4,
n_max = 38,
col_names = c("Provinsi", "TPT_Feb_2026", "TPT_Agustus", "TPT_Tahunan"),
na = c("", "-", "NA", "N/A")
)
# Pembersihan Data & Pengelompokan Wilayah
data_clean <- data_tpt %>%
select(Provinsi, TPT_Feb_2026) %>%
filter(!is.na(Provinsi)) %>%
filter(!grepl("indonesia", tolower(Provinsi))) %>% # Perbaikan grepl aman tanpa ignore.case
mutate(TPT_Feb_2026 = as.numeric(gsub(",", ".", TPT_Feb_2026))) %>%
# Pengelompokan Wilayah berdasarkan Pulau
mutate(Wilayah = case_when(
Provinsi %in% c("ACEH", "SUMATERA UTARA", "SUMATERA BARAT", "RIAU", "JAMBI",
"SUMATERA SELATAN", "BENGKULU", "LAMPUNG", "KEP. BANGKA BELITUNG",
"KEP. RIAU") ~ "Sumatera",
Provinsi %in% c("DKI JAKARTA", "JAWA BARAT", "JAWA TENGAH", "DI YOGYAKARTA",
"JAWA TIMUR", "BANTEN") ~ "Jawa",
Provinsi %in% c("BALI", "NUSA TENGGARA BARAT", "NUSA TENGGARA TIMUR") ~ "Nusa Tenggara & Bali",
Provinsi %in% c("KALIMANTAN BARAT", "KALIMANTAN TENGAH", "KALIMANTAN SELATAN",
"KALIMANTAN TIMUR", "KALIMANTAN UTARA") ~ "Kalimantan",
Provinsi %in% c("SULAWESI UTARA", "SULAWESI TENGAH", "SULAWESI SELATAN",
"SULAWESI TENGGARA", "GORONTALO", "SULAWESI BARAT") ~ "Sulawesi",
TRUE ~ "Maluku & Papua"
)) %>%
mutate(Wilayah = factor(Wilayah, levels = c("Sumatera", "Jawa", "Nusa Tenggara & Bali", "Kalimantan", "Sulawesi", "Maluku & Papua")))
# Menampilkan Tabel Modern Menggunakan gt
tabel_modern <- data_clean %>%
gt(groupname_col = "Wilayah") %>%
tab_header(
title = md("**Tingkat Pengangguran Terbuka (TPT) per Provinsi (Februari 2026)**"),
subtitle = "Data Hasil Sakernas BPS Indonesia (Persen)"
) %>%
cols_label(
Provinsi = "Provinsi",
TPT_Feb_2026 = "TPT Februari 2026 (%)"
) %>%
fmt_number(
columns = TPT_Feb_2026,
decimals = 2,
dec_mark = ",",
sep_mark = "."
) %>%
tab_style(
style = cell_fill(color = "#f0f4f8"),
locations = cells_body(columns = TPT_Feb_2026)
) %>%
tab_style(
style = list(
cell_fill(color = "#1e293b"),
cell_text(color = "white", weight = "bold", align = "center")
),
locations = cells_column_labels()
) %>%
tab_style(
style = list(
cell_fill(color = "#e2e8f0"),
cell_text(weight = "bold", color = "#0f172a")
),
locations = cells_row_groups()
) %>%
cols_align(align = "left", columns = Provinsi) %>%
cols_align(align = "right", columns = TPT_Feb_2026) %>%
tab_options(
table.border.top.color = "transparent",
table.border.bottom.color = "#1e293b"
) %>%
opt_row_striping()
tabel_modern| Tingkat Pengangguran Terbuka (TPT) per Provinsi (Februari 2026) | |
| Data Hasil Sakernas BPS Indonesia (Persen) | |
| Provinsi | TPT Februari 2026 (%) |
|---|---|
| Sumatera | |
| ACEH | 5,88 |
| SUMATERA UTARA | 5,01 |
| SUMATERA BARAT | 5,51 |
| RIAU | 4,09 |
| JAMBI | 3,99 |
| SUMATERA SELATAN | 3,59 |
| BENGKULU | 3,23 |
| LAMPUNG | 3,95 |
| KEP. BANGKA BELITUNG | 4,15 |
| KEP. RIAU | 6,87 |
| Jawa | |
| DKI JAKARTA | 6,03 |
| JAWA BARAT | 6,64 |
| JAWA TENGAH | 4,24 |
| DI YOGYAKARTA | 3,05 |
| JAWA TIMUR | 3,55 |
| BANTEN | 6,59 |
| Nusa Tenggara & Bali | |
| BALI | 1,59 |
| NUSA TENGGARA BARAT | 2,99 |
| NUSA TENGGARA TIMUR | 3,16 |
| Kalimantan | |
| KALIMANTAN BARAT | 4,57 |
| KALIMANTAN TENGAH | 3,44 |
| KALIMANTAN SELATAN | 3,80 |
| KALIMANTAN TIMUR | 5,27 |
| KALIMANTAN UTARA | 3,90 |
| Sulawesi | |
| SULAWESI UTARA | 5,75 |
| SULAWESI TENGAH | 2,95 |
| SULAWESI SELATAN | 4,95 |
| SULAWESI TENGGARA | 3,25 |
| GORONTALO | 3,17 |
| SULAWESI BARAT | 2,93 |
| Maluku & Papua | |
| MALUKU | 5,80 |
| MALUKU UTARA | 4,46 |
| PAPUA BARAT | 4,10 |
| PAPUA BARAT DAYA | 6,41 |
| PAPUA | 7,02 |
| PAPUA SELATAN | 5,25 |
| PAPUA TENGAH | 3,83 |
| PAPUA PEGUNUNGAN | 1,70 |
top10_2026 <- data_clean %>%
arrange(desc(TPT_Feb_2026)) %>%
head(10)
ggplot(top10_2026, aes(x = reorder(Provinsi, TPT_Feb_2026), y = TPT_Feb_2026, fill = Wilayah)) +
geom_col(color = "black", alpha = 0.85, width = 0.7) +
coord_flip() +
geom_text(
aes(label = paste0(format(TPT_Feb_2026, nsmall = 2), "%")),
hjust = -0.1,
size = 3.8,
fontface = "bold"
) +
scale_fill_brewer(palette = "Set2") +
scale_y_continuous(limits = c(0, 8.5), breaks = seq(0, 8, by = 2)) +
theme_minimal() +
labs(
title = "Top 10 Provinsi dengan Pengangguran Terbuka Tertinggi (Februari 2026)",
x = "Provinsi",
y = "Tingkat Pengangguran Terbuka (%)",
fill = "Wilayah/Pulau"
) +
theme(
plot.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 10)
)
> Interpretasi: >
rata_nasional <- 4.68 # Angka acuan Rata-rata Nasional BPS 2026
ggplot(data_clean, aes(x = reorder(Provinsi, TPT_Feb_2026), y = TPT_Feb_2026, color = Wilayah)) +
geom_point(size = 3.5) +
geom_hline(yintercept = rata_nasional, linetype = "dashed", color = "red", size = 1) +
annotate("text", x = 5, y = rata_nasional + 0.4, label = paste0("Rata-rata Nasional: ", rata_nasional, "%"), color = "red", fontface = "bold") +
coord_flip() +
scale_color_brewer(palette = "Dark2") +
theme_bw() +
labs(
title = "Sebaran TPT Seluruh Provinsi vs Rata-Rata Nasional (Februari 2026)",
x = "Provinsi",
y = "Tingkat Pengangguran Terbuka (%)",
color = "Wilayah/Pulau"
) +
theme(
axis.text.y = element_text(size = 8),
plot.title = element_text(face = "bold", size = 13)
)
> Interpretasi: >
ggplot(data_clean, aes(x = TPT_Feb_2026)) +
geom_histogram(
bins = 7,
fill = "#3b82f6",
color = "#1e293b",
alpha = 0.7
) +
geom_density(
aes(y = ..count.. * 0.8),
color = "#ef4444",
size = 1.2
) +
geom_vline(
xintercept = mean(data_clean$TPT_Feb_2026, na.rm = TRUE),
linetype = "dashed",
color = "#059669",
size = 1
) +
annotate(
"text",
x = mean(data_clean$TPT_Feb_2026, na.rm = TRUE) + 0.6,
y = 9,
label = paste0("Rata-Rata: ", round(mean(data_clean$TPT_Feb_2026, na.rm = TRUE), 2), "%"),
color = "#059669",
fontface = "bold"
) +
theme_minimal() +
labs(
title = "Distribusi Frekuensi TPT Seluruh Provinsi (Februari 2026)",
subtitle = "Garis Hijau: Rata-Rata | Garis Merah: Kurva Sebaran Data (Density)",
x = "Tingkat Pengangguran Terbuka (%)",
y = "Jumlah Provinsi"
) +
theme(
plot.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 10)
)
> Interpretasi: >
Tingkat Pengangguran Terbuka (TPT) di Indonesia pada Februari 2026 tercatat sebesar 4,68% secara nasional. Terdapat variasi geografis yang cukup mencolok:
Wilayah Industri Utama & Pusat Ekonomi (seperti Jawa Barat, Banten, DKI Jakarta) serta Papua mencatatkan pengangguran di atas rata-rata nasional akibat besarnya jumlah angkatan kerja baru dan pencari kerja harian.
Wilayah Nusa Tenggara & Bali mencatatkan angka pengangguran terendah secara nasional, didukung oleh daya serap sektor pariwisata dan sektor informal lokal.