library(readxl)
## Warning: package 'readxl' was built under R version 4.4.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.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
d2025 <- read_excel("D:\\Documents\\Downloads\\Data Bencana.xlsx") %>% mutate(tahun = 2025)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2024 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (1).xlsx") %>% mutate(tahun = 2024)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2023 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (2).xlsx") %>% mutate(tahun = 2023)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2022 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (3).xlsx") %>% mutate(tahun = 2022)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2021 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (4).xlsx") %>% mutate(tahun = 2021)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2020 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (5).xlsx") %>% mutate(tahun = 2020)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2019 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (6).xlsx") %>% mutate(tahun = 2019)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2018 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (7).xlsx") %>% mutate(tahun = 2018)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2017 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (8).xlsx") %>% mutate(tahun = 2017)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
d2016 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (9).xlsx") %>% mutate(tahun = 2016)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
data_bencana <- bind_rows(
d2016, d2017, d2018, d2019, d2020,
d2021, d2022, d2023, d2024, d2025
) %>%
arrange(tahun)
head(data_bencana)
## # A tibble: 6 × 17
## `Data Bencana` ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 No. Kode Ide… ID K… Tang… Keja… Loka… Kabu… Prov… Kron… Peny… Meni…
## 2 1 35271012… 3527 42734 BANJ… <NA> SAMP… JAWA… Doku… <NA> 0
## 3 2 33151012… 3315 42734 BANJ… <NA> GROB… JAWA… Doku… <NA> 0
## 4 3 64091012… 6409 42734 BANJ… <NA> PENA… KALI… Doku… <NA> 0
## 5 4 32101012… 3210 42730 BANJ… <NA> MAJA… JAWA… Doku… <NA> 0
## 6 5 32091012… 3209 42729 BANJ… <NA> CIRE… JAWA… Doku… <NA> 0
## # ℹ 6 more variables: ...12 <chr>, ...13 <chr>, ...14 <chr>, ...15 <chr>,
## # ...16 <chr>, tahun <dbl>
str(data_bencana)
## tibble [13,076 × 17] (S3: tbl_df/tbl/data.frame)
## $ Data Bencana: chr [1:13076] "No." "1" "2" "3" ...
## $ ...2 : chr [1:13076] "Kode Identitas Bencana" "3527101201612301" "3315101201612301" "6409101201612301" ...
## $ ...3 : chr [1:13076] "ID Kabupaten" "3527" "3315" "6409" ...
## $ ...4 : chr [1:13076] "Tanggal Kejadian" "42734" "42734" "42734" ...
## $ ...5 : chr [1:13076] "Kejadian" "BANJIR" "BANJIR" "BANJIR" ...
## $ ...6 : chr [1:13076] "Lokasi" NA NA NA ...
## $ ...7 : chr [1:13076] "Kabupaten" "SAMPANG" "GROBOGAN" "PENAJAM PASER UTARA" ...
## $ ...8 : chr [1:13076] "Provinsi" "JAWA TIMUR" "JAWA TENGAH" "KALIMANTAN TIMUR" ...
## $ ...9 : chr [1:13076] "Kronologi & Dokumentasi" "Dokumentasi" "Dokumentasi" "Dokumentasi" ...
## $ ...10 : chr [1:13076] "Penyebab" NA NA NA ...
## $ ...11 : chr [1:13076] "Meninggal" "0" "0" "0" ...
## $ ...12 : chr [1:13076] "Hilang" "0" "0" "0" ...
## $ ...13 : chr [1:13076] "Terluka" "0" "0" "0" ...
## $ ...14 : chr [1:13076] "Rumah Rusak" "0" "0" "0" ...
## $ ...15 : chr [1:13076] "Rumah Terendam" "5000" "1200" "3" ...
## $ ...16 : chr [1:13076] "Fasum Rusak" "0" "0" "0" ...
## $ tahun : num [1:13076] 2016 2016 2016 2016 2016 ...
data_bencana <- data_bencana %>%
rename(
meninggal = `...11`,
hilang = `...12`,
terluka = `...13`,
rumah_rusak = `...14`,
rumah_terendam = `...15`,
fasum_rusak = `...16`,
tanggal_kejadian = `...4`,
provinsi = `...8`,
kabupaten = `...7`,
kejadian = `...5`
)
data_bencana <- data_bencana %>%
mutate(across(
c(meninggal, hilang, terluka, rumah_rusak, rumah_terendam, fasum_rusak),
~ as.numeric(gsub(",", "", .))
))
## Warning: There were 6 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(...)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 5 remaining warnings.
data_bencana <- data_bencana %>%
mutate(
tanggal_kejadian = as.Date(
as.numeric(tanggal_kejadian),
origin = "1899-12-30"
)
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `tanggal_kejadian = as.Date(as.numeric(tanggal_kejadian), origin
## = "1899-12-30")`.
## Caused by warning in `as.Date()`:
## ! NAs introduced by coercion
data_bencana %>%
group_by(tahun) %>%
summarise(jumlah_kejadian = n())
## # A tibble: 10 × 2
## tahun jumlah_kejadian
## <dbl> <int>
## 1 2016 826
## 2 2017 981
## 3 2018 885
## 4 2019 791
## 5 2020 1610
## 6 2021 1932
## 7 2022 1574
## 8 2023 1266
## 9 2024 1511
## 10 2025 1700
Berdasarkan data periode 2016–2025, kejadian banjir menunjukkan frekuensi yang tinggi dan cenderung meningkat. Pada tahun 2016 tercatat 826 kejadian, kemudian meningkat signifikan setelah 2020. Puncaknya terjadi pada tahun 2021 dengan 1.932 kejadian, dan hingga 2025 jumlah kejadian tetap berada di atas 1.500 kejadian per tahun.
Temuan ini mengindikasikan bahwa banjir bukan kejadian insidental, melainkan masalah struktural yang berulang dan semakin intens. Kenaikan pasca-2020 juga dapat mengindikasikan kombinasi faktor perubahan iklim, degradasi lingkungan, dan peningkatan eksposur penduduk di wilayah rawan.
➡️ Implikasi: Sistem penanganan berbasis respons pasca-kejadian tidak lagi memadai; diperlukan pendekatan preventif melalui peringatan dini.
data_bencana %>%
mutate(bulan = format(tanggal_kejadian, "%m")) %>%
group_by(bulan) %>%
summarise(jumlah = n())
## # A tibble: 13 × 2
## bulan jumlah
## <chr> <int>
## 1 01 1754
## 2 02 1738
## 3 03 1678
## 4 04 1039
## 5 05 1003
## 6 06 651
## 7 07 607
## 8 08 468
## 9 09 592
## 10 10 826
## 11 11 1297
## 12 12 1413
## 13 <NA> 10
Distribusi kejadian banjir berdasarkan bulan menunjukkan pola musiman yang sangat kuat. Kejadian tertinggi terjadi pada Januari (1.754 kejadian), Februari (1.738), dan Maret (1.678). Sebaliknya, frekuensi terendah terjadi pada periode Juni–Agustus, dengan titik terendah pada Agustus (468 kejadian).
Pola ini konsisten dengan musim hujan di Indonesia dan menunjukkan bahwa banjir bersifat periodik dan dapat diantisipasi.
➡️ Implikasi: Pola musiman ini merupakan fondasi ideal untuk sistem peringatan dini berbasis kalender risiko, di mana aplikasi dapat meningkatkan intensitas notifikasi menjelang dan selama musim rawan banjir.
data_bencana %>%
group_by(tahun) %>%
summarise(
meninggal = sum(meninggal, na.rm = TRUE),
terdampak = sum(rumah_terendam, na.rm = TRUE)
)
## # A tibble: 10 × 3
## tahun meninggal terdampak
## <dbl> <dbl> <dbl>
## 1 2016 193 334017
## 2 2017 146 376317
## 3 2018 126 287042
## 4 2019 263 222067
## 5 2020 235 1032358
## 6 2021 337 1489442
## 7 2022 128 1120885
## 8 2023 76 753788
## 9 2024 208 1237372
## 10 2025 1309 1313326
Selain frekuensi yang tinggi, banjir juga menimbulkan dampak kemanusiaan yang signifikan. Sepanjang periode pengamatan, jumlah korban meninggal berkisar antara 76 hingga 337 orang per tahun, dengan lonjakan ekstrem pada tahun 2025 (1.309 korban meninggal). Jumlah penduduk terdampak juga sangat besar, mencapai lebih dari 1,4 juta orang pada tahun 2021, dan tetap berada di atas 1 juta orang per tahun pada beberapa tahun lainnya.
Angka-angka ini menunjukkan bahwa banjir bukan sekadar gangguan lingkungan, tetapi ancaman serius terhadap keselamatan dan kesejahteraan masyarakat.
➡️ Implikasi: Banyaknya korban menunjukkan adanya keterlambatan informasi dan kesiapsiagaan, yang dapat diminimalkan melalui sistem peringatan dini yang cepat, mudah diakses, dan berbasis lokasi.
data_bencana %>%
group_by(provinsi) %>%
summarise(jumlah = n()) %>%
arrange(desc(jumlah))
## # A tibble: 79 × 2
## provinsi jumlah
## <chr> <int>
## 1 JAWA BARAT 1367
## 2 JAWA TENGAH 1309
## 3 JAWA TIMUR 1086
## 4 ACEH 689
## 5 SUMATERA UTARA 587
## 6 SULAWESI SELATAN 479
## 7 SULAWESI TENGAH 465
## 8 SUMATERA BARAT 440
## 9 NUSA TENGGARA BARAT 378
## 10 SUMATERA SELATAN 366
## # ℹ 69 more rows
data_bencana %>%
count(provinsi, kabupaten) %>%
arrange(desc(n))
## # A tibble: 934 × 3
## provinsi kabupaten n
## <chr> <chr> <int>
## 1 JAWA BARAT BOGOR 247
## 2 JAWA BARAT BANDUNG 163
## 3 JAWA TENGAH CILACAP 135
## 4 BANTEN SERANG 123
## 5 JAWA BARAT CIREBON 103
## 6 JAWA BARAT KARAWANG 96
## 7 SULAWESI SELATAN LUWU UTARA 92
## 8 JAWA TENGAH PATI 88
## 9 KALIMANTAN SELATAN BALANGAN 86
## 10 JAWA TIMUR JEMBER 83
## # ℹ 924 more rows
Analisis spasial menunjukkan bahwa kejadian banjir terkonsentrasi di wilayah tertentu, khususnya di Pulau Jawa. Provinsi dengan kejadian banjir tertinggi adalah Jawa Barat (1.367 kejadian), diikuti oleh Jawa Tengah (1.309) dan Jawa Timur (1.086). Provinsi lain seperti Aceh dan Sumatera Utara juga menunjukkan frekuensi yang cukup tinggi.
Lebih jauh, pada tingkat kabupaten/kota, beberapa wilayah mengalami banjir secara berulang, seperti Kabupaten Bogor (247 kejadian), Bandung (163), dan Cilacap (135).
➡️ Implikasi: Risiko banjir bersifat lokal dan berulang, sehingga sangat cocok ditangani dengan aplikasi peringatan dini berbasis geolokasi, bukan pendekatan umum berskala nasional.
e2025 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (10).xlsx") %>% mutate(tahun = 2025)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
e2024 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (11).xlsx") %>% mutate(tahun = 2024)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
e2023 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (1) (1).xlsx") %>% mutate(tahun = 2023)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
e2022 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (12).xlsx") %>% mutate(tahun = 2022)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
e2021 <- read_excel("D:\\Documents\\Downloads\\Data Bencana (2) (1).xlsx") %>% mutate(tahun = 2021)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
data_kejadian <- bind_rows(
e2021, e2022, e2023, e2024, e2025
) %>%
arrange(tahun)
head(data_kejadian)
## # A tibble: 6 × 17
## `Data Bencana` ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 No. Kode Ide… ID K… Tang… Keja… Loka… Kabu… Prov… Kron… Peny… Meni…
## 2 1 1213 101… 1205 44561 BANJ… Kec.… LANG… SUMA… Doku… ● Di… 0
## 3 2 3327 105… 3327 44561 CUAC… Ds. … PEMA… JAWA… Doku… <NA> 0
## 4 3 3374 102… 3374 44561 TANA… Kel.… KOTA… JAWA… Doku… <NA> 0
## 5 4 3528 101… 3528 44561 BANJ… Kec.… PAME… JAWA… Doku… ● Di… 0
## 6 5 6504 105… 6503 44561 CUAC… Jl,G… NUNU… KALI… Doku… <NA> 0
## # ℹ 6 more variables: ...12 <chr>, ...13 <chr>, ...14 <chr>, ...15 <chr>,
## # ...16 <chr>, tahun <dbl>
str(data_kejadian)
## tibble [22,743 × 17] (S3: tbl_df/tbl/data.frame)
## $ Data Bencana: chr [1:22743] "No." "1" "2" "3" ...
## $ ...2 : chr [1:22743] "Kode Identitas Bencana" "1213 101 2021 012 31 1" "3327 105 2021 012 31 1" "3374 102 2021 012 31 1" ...
## $ ...3 : chr [1:22743] "ID Kabupaten" "1205" "3327" "3374" ...
## $ ...4 : chr [1:22743] "Tanggal Kejadian" "44561" "44561" "44561" ...
## $ ...5 : chr [1:22743] "Kejadian" "BANJIR" "CUACA EKSTREM" "TANAH LONGSOR" ...
## $ ...6 : chr [1:22743] "Lokasi" "Kec. Pematang Jaya Ds. Damar Condong" "Ds. Clekatakan Kec. Pulosari" "Kel. Karanganyar Gunung Kec. Candisari" ...
## $ ...7 : chr [1:22743] "Kabupaten" "LANGKAT" "PEMALANG" "KOTA SEMARANG" ...
## $ ...8 : chr [1:22743] "Provinsi" "SUMATERA UTARA" "JAWA TENGAH" "JAWA TENGAH" ...
## $ ...9 : chr [1:22743] "Kronologi & Dokumentasi" "Dokumentasi" "Dokumentasi" "Dokumentasi" ...
## $ ...10 : chr [1:22743] "Penyebab" "● Dipicu oleh dengan intensitas curah hujan yang cukup tinggi pada hari Jum'at Tanggal 31 Desember 2021 Pukul 0"| __truncated__ NA NA ...
## $ ...11 : chr [1:22743] "Meninggal" "0" "0" "0" ...
## $ ...12 : chr [1:22743] "Hilang" "0" "0" "0" ...
## $ ...13 : chr [1:22743] "Terluka" "0" "0" "0" ...
## $ ...14 : chr [1:22743] "Rumah Rusak" "0" "1" "1" ...
## $ ...15 : chr [1:22743] "Rumah Terendam" "70" "0" "0" ...
## $ ...16 : chr [1:22743] "Fasum Rusak" "0" "0" "0" ...
## $ tahun : num [1:22743] 2021 2021 2021 2021 2021 ...
data_kejadian <- data_kejadian %>%
rename(
meninggal = `...11`,
hilang = `...12`,
terluka = `...13`,
rumah_rusak = `...14`,
rumah_terendam = `...15`,
fasum_rusak = `...16`,
tanggal_kejadian = `...4`,
provinsi = `...8`,
kabupaten = `...7`,
kejadian = `...5`
)
data_kejadian <- data_kejadian %>%
mutate(across(
c(meninggal, hilang, terluka, rumah_rusak, rumah_terendam, fasum_rusak),
~ as.numeric(gsub(",", "", .))
))
## Warning: There were 6 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(...)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 5 remaining warnings.
data_kejadian <- data_kejadian %>%
mutate(
tanggal_kejadian = as.Date(
as.numeric(tanggal_kejadian),
origin = "1899-12-30"
)
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `tanggal_kejadian = as.Date(as.numeric(tanggal_kejadian), origin
## = "1899-12-30")`.
## Caused by warning in `as.Date()`:
## ! NAs introduced by coercion
library(dplyr)
proporsi_kejadian <- data_kejadian %>%
group_by(kejadian) %>%
summarise(jumlah = n()) %>%
mutate(
proporsi = jumlah / sum(jumlah),
persentase = proporsi * 100
) %>%
arrange(desc(jumlah))
proporsi_kejadian
## # A tibble: 10 × 4
## kejadian jumlah proporsi persentase
## <chr> <int> <dbl> <dbl>
## 1 BANJIR 7979 0.351 35.1
## 2 CUACA EKSTREM 5783 0.254 25.4
## 3 KEBAKARAN HUTAN DAN LAHAN 4662 0.205 20.5
## 4 TANAH LONGSOR 3477 0.153 15.3
## 5 KEKERINGAN 333 0.0146 1.46
## 6 GEMPABUMI 275 0.0121 1.21
## 7 GELOMBANG PASANG DAN ABRASI 203 0.00893 0.893
## 8 ERUPSI GUNUNG API 24 0.00106 0.106
## 9 Kejadian 5 0.000220 0.0220
## 10 TSUNAMI 2 0.0000879 0.00879
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
ggplot(proporsi_kejadian, aes(x = reorder(kejadian, jumlah), y = persentase)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(
title = "Proporsi Jenis Bencana di Indonesia",
x = "Jenis Bencana",
y = "Persentase (%)"
) +
theme_minimal()
Hasil eksplorasi menunjukkan bahwa banjir merupakan jenis bencana paling dominan di Indonesia selama periode 2016–2025. Dari seluruh kejadian bencana yang tercatat, banjir menyumbang sekitar 35,08% atau 7.979 kejadian, jauh lebih tinggi dibandingkan bencana lainnya seperti cuaca ekstrem (25,43%) dan kebakaran hutan dan lahan (20,50%).
Dominasi ini menunjukkan bahwa banjir bukan kejadian insidental, melainkan risiko struktural yang berulang dan memerlukan pendekatan mitigasi yang lebih sistematis. Tingginya proporsi banjir mempertegas urgensi pengembangan sistem peringatan dini yang spesifik dan fokus pada banjir, bukan sekadar sistem kebencanaan umum.