=== Library utama ===

library(jsonlite)   # Baca data JSON dari API
## Warning: package 'jsonlite' was built under R version 4.5.2
library(dplyr)      # Manipulasi data
## Warning: package 'dplyr' was built under R version 4.5.2
## 
## 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(purrr)      # Iterasi dan pemetaan fungsi
## Warning: package 'purrr' was built under R version 4.5.2
## 
## Attaching package: 'purrr'
## The following object is masked from 'package:jsonlite':
## 
##     flatten
library(tidyr)      # Ubah bentuk data
## Warning: package 'tidyr' was built under R version 4.5.2
library(stringr)    # Olah teks dan regex
## Warning: package 'stringr' was built under R version 4.5.2
library(ggplot2)    # Visualisasi data
library(viridis)    # Palet warna modern
## Loading required package: viridisLite
library(factoextra) # Visualisasi dan analisis clustering
## Warning: package 'factoextra' was built under R version 4.5.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(cluster)    # Analisis cluster lanjut
library(sf)         # Data spasial (shapefile)
## Warning: package 'sf' was built under R version 4.5.2
## Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE
library(patchwork)  # Gabungkan beberapa plot
library(grid)       # Atur tata letak grafis

=== Daftar API PDRB per daerah (contoh tahun 2023/2024) === Setiap elemen berisi URL API BPS untuk masing-masing kabupaten/kota di Provinsi Babel.

urls <- list(
  'Bangka'              = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1901/var/45/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Belitung'            = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1902/var/35/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Bangka Barat'        = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1903/var/30/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Bangka Tengah'       = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1904/var/46/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Bangka Selatan'      = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1905/var/8/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Belitung Timur'      = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1906/var/58/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d",
  'Kota Pangkal Pinang' = "https://webapi.bps.go.id/v1/api/list/model/data/lang/ind/domain/1971/var/48/th/110/key/dec6ad5937bd46f1da5da3dbbf15cd4d"
)

=== Fungsi untuk mengambil data JSON dari API BPS === Fungsi ini: - Menampilkan nama daerah yang sedang diambil - Mengambil data dari URL menggunakan fromJSON() - Menangani error jika koneksi gagal atau format salah