TENTANG BANJIR

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

ANALISIS

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.

BANJIR VS LAINNYA

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

ANALISIS

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.