LBB Interactive Plotting

Report R Markdown ini dubuat untuk tujuan pembelajaran self learning materi Interactive Plotting dengan menggunakan Software R. Pada LBB ini saya menggunakan data Bencana Alam yang saya ambil dari website https://gis.bnpb.go.id/ dalam bentuk file excel. Data tersebut saya tarik dari rentang waktu 1 januari 2023 hingga 28 Mei 2023. Pada LBB ini bertujuan untuk memonitoring kejadian Bencana Alam di Indonesia sehingga untuk memudahkan monitoring diperlukan sistem Dashboard, yang dalam LBB ini mengaplikasikan dengan menggunakan Shiny Dashboard.

Import Library

library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
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)
library(plotly)
## Warning: package 'plotly' was built under R version 4.2.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(glue)

Read Data

#read data

disaster <- read_excel("Data Input/Data Bencana.xlsx")
head(disaster)
## # A tibble: 6 × 16
##     No. Kode_Identi…¹ ID_Ka…² Tanggal_Kejadian    Kejad…³ Lokasi Kabup…⁴ Provi…⁵
##   <dbl> <chr>           <dbl> <dttm>              <chr>   <chr>  <chr>   <chr>  
## 1     1 3319 102 202…    3319 2023-05-28 00:00:00 TANAH … Kec. … KUDUS   JAWA T…
## 2     2 6301 107 202…    6301 2023-05-28 00:00:00 KEBAKA… Kec. … TANAH … KALIMA…
## 3     3 1804 105 202…    1804 2023-05-28 00:00:00 PUTING… Kec. … LAMPUN… LAMPUNG
## 4     4 6504 107 202…    6504 2023-05-28 00:00:00 KEBAKA… Kec. … NUNUKAN KALIMA…
## 5     5 1172 107 202…    1172 2023-05-28 00:00:00 KEBAKA… Kec. … KOTA S… ACEH   
## 6     6 1606 107 202…    1606 2023-05-28 00:00:00 KEBAKA… Kec. … MUSI B… SUMATE…
## # … with 8 more variables: `Kronologi & Dokumentasi` <chr>, Penyebab <chr>,
## #   Meninggal <dbl>, Hilang <dbl>, Terluka <dbl>, Rumah_Rusak <dbl>,
## #   Rumah_Terendam <dbl>, Fasum_Rusak <dbl>, and abbreviated variable names
## #   ¹​Kode_Identitas_Bencana, ²​ID_Kabupaten, ³​Kejadian, ⁴​Kabupaten, ⁵​Provinsi

Cek Struktur Data

# Cek struktur data

disaster %>% 
  glimpse()
## Rows: 1,146
## Columns: 16
## $ No.                       <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1…
## $ Kode_Identitas_Bencana    <chr> "3319 102 2023 05 028 1", "6301 107 2023 05 …
## $ ID_Kabupaten              <dbl> 3319, 6301, 1804, 6504, 1172, 1606, 1612, 62…
## $ Tanggal_Kejadian          <dttm> 2023-05-28, 2023-05-28, 2023-05-28, 2023-05…
## $ Kejadian                  <chr> "TANAH LONGSOR", "KEBAKARAN HUTAN DAN LAHAN"…
## $ Lokasi                    <chr> "Kec. Dawe Ds. Dukuh Waringin", "Kec.  Bati-…
## $ Kabupaten                 <chr> "KUDUS", "TANAH LAUT", "LAMPUNG TIMUR", "NUN…
## $ Provinsi                  <chr> "JAWA TENGAH", "KALIMANTAN SELATAN", "LAMPUN…
## $ `Kronologi & Dokumentasi` <chr> "Dokumentasi", "Dokumentasi", "Dokumentasi",…
## $ Penyebab                  <chr> "Sejumlah 8 pekerja melakukan aktifitas pemb…
## $ Meninggal                 <dbl> 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Hilang                    <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ Terluka                   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ Rumah_Rusak               <dbl> 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Rumah_Terendam            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ Fasum_Rusak               <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
# Mengetahui kolom-kolom apa saja yang ada di data
colnames(disaster)
##  [1] "No."                     "Kode_Identitas_Bencana" 
##  [3] "ID_Kabupaten"            "Tanggal_Kejadian"       
##  [5] "Kejadian"                "Lokasi"                 
##  [7] "Kabupaten"               "Provinsi"               
##  [9] "Kronologi & Dokumentasi" "Penyebab"               
## [11] "Meninggal"               "Hilang"                 
## [13] "Terluka"                 "Rumah_Rusak"            
## [15] "Rumah_Terendam"          "Fasum_Rusak"

seleksi kolom mana yang akan dipake dalam tahapan selanjutnya

Kolom yang tidak dipakai No, Kode Identitas Bencana, Kronologi & Dokumentasi,

kolom yang dipakai: ID Kabupaten, Tanggal Kejadian, Kejadian, Lokasi, Kejadian, Lokasi, Kabupaten, Provinsi, Penyebab, Meninggal, Hilang, Terluka, Rumah Rusak, Rumah Terendam, Fasum Rusak

# Hilangkan kolom yang tidak dipakai
disaster <- disaster %>% 
  select(-c("No.", "Kode_Identitas_Bencana", "Kronologi & Dokumentasi"))
head(disaster)
## # A tibble: 6 × 13
##   ID_Kabupa…¹ Tanggal_Kejadian    Kejad…² Lokasi Kabup…³ Provi…⁴ Penye…⁵ Menin…⁶
##         <dbl> <dttm>              <chr>   <chr>  <chr>   <chr>   <chr>     <dbl>
## 1        3319 2023-05-28 00:00:00 TANAH … Kec. … KUDUS   JAWA T… Sejuml…       3
## 2        6301 2023-05-28 00:00:00 KEBAKA… Kec. … TANAH … KALIMA… Masih …      NA
## 3        1804 2023-05-28 00:00:00 PUTING… Kec. … LAMPUN… LAMPUNG Dipicu…      NA
## 4        6504 2023-05-28 00:00:00 KEBAKA… Kec. … NUNUKAN KALIMA… Masih …      NA
## 5        1172 2023-05-28 00:00:00 KEBAKA… Kec. … KOTA S… ACEH    Masih …      NA
## 6        1606 2023-05-28 00:00:00 KEBAKA… Kec. … MUSI B… SUMATE… ●masih…      NA
## # … with 5 more variables: Hilang <dbl>, Terluka <dbl>, Rumah_Rusak <dbl>,
## #   Rumah_Terendam <dbl>, Fasum_Rusak <dbl>, and abbreviated variable names
## #   ¹​ID_Kabupaten, ²​Kejadian, ³​Kabupaten, ⁴​Provinsi, ⁵​Penyebab, ⁶​Meninggal

Mengubah Tipe Data

Mengubah tipe data Tipe data yang belum sesuai diantaranya adalah:

ID Kabupaten : factor Tanggal Kejadian: YMD <- Lubridate kejadian : factor Kabupaten : factor Provinsi : factor Meninggal, Hilang, Terluka, Rumah Rusak, Rumah Terendam, Fasum Rusak : integer

disaster <- disaster %>% 
  mutate(ID_Kabupaten = as.factor(ID_Kabupaten),
         Kejadian = as.factor(Kejadian),
         Kabupaten = as.factor(Kabupaten),
         Provinsi = as.factor(Provinsi),
         Meninggal = as.integer(Meninggal),
         Hilang = as.integer(Hilang),
         Terluka = as.integer(Terluka),
         Rumah_Rusak = as.integer(Rumah_Rusak), 
         Rumah_Terendam = as.integer(Rumah_Terendam), 
         Fasum_Rusak = as.integer(Fasum_Rusak))

glimpse(disaster)
## Rows: 1,146
## Columns: 13
## $ ID_Kabupaten     <fct> 3319, 6301, 1804, 6504, 1172, 1606, 1612, 6271, 6271,…
## $ Tanggal_Kejadian <dttm> 2023-05-28, 2023-05-28, 2023-05-28, 2023-05-28, 2023…
## $ Kejadian         <fct> TANAH LONGSOR, KEBAKARAN HUTAN DAN LAHAN, PUTING BELI…
## $ Lokasi           <chr> "Kec. Dawe Ds. Dukuh Waringin", "Kec.  Bati-Bati Ds. …
## $ Kabupaten        <fct> KUDUS, TANAH LAUT, LAMPUNG TIMUR, NUNUKAN, KOTA SABAN…
## $ Provinsi         <fct> JAWA TENGAH, KALIMANTAN SELATAN, LAMPUNG, KALIMANTAN …
## $ Penyebab         <chr> "Sejumlah 8 pekerja melakukan aktifitas pembenahan ta…
## $ Meninggal        <int> 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ Hilang           <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Terluka          <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Rumah_Rusak      <int> 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ Rumah_Terendam   <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2…
## $ Fasum_Rusak      <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…

sekarang, mari kita sesuaikan tipe data tanggal kejadian dengan menggunakan lubridate

library(lubridate)
## Warning: package 'lubridate' was built under R version 4.2.3
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
disaster$Tanggal_Kejadian <- ymd(disaster$Tanggal_Kejadian)
class(disaster$Tanggal_Kejadian)
## [1] "Date"
head(disaster)
## # A tibble: 6 × 13
##   ID_Kabupaten Tanggal_K…¹ Kejad…² Lokasi Kabup…³ Provi…⁴ Penye…⁵ Menin…⁶ Hilang
##   <fct>        <date>      <fct>   <chr>  <fct>   <fct>   <chr>     <int>  <int>
## 1 3319         2023-05-28  TANAH … Kec. … KUDUS   JAWA T… Sejuml…       3     NA
## 2 6301         2023-05-28  KEBAKA… Kec. … TANAH … KALIMA… Masih …      NA     NA
## 3 1804         2023-05-28  PUTING… Kec. … LAMPUN… LAMPUNG Dipicu…      NA     NA
## 4 6504         2023-05-28  KEBAKA… Kec. … NUNUKAN KALIMA… Masih …      NA     NA
## 5 1172         2023-05-28  KEBAKA… Kec. … KOTA S… ACEH    Masih …      NA     NA
## 6 1606         2023-05-28  KEBAKA… Kec. … MUSI B… SUMATE… ●masih…      NA     NA
## # … with 4 more variables: Terluka <int>, Rumah_Rusak <int>,
## #   Rumah_Terendam <int>, Fasum_Rusak <int>, and abbreviated variable names
## #   ¹​Tanggal_Kejadian, ²​Kejadian, ³​Kabupaten, ⁴​Provinsi, ⁵​Penyebab, ⁶​Meninggal
glimpse(disaster)
## Rows: 1,146
## Columns: 13
## $ ID_Kabupaten     <fct> 3319, 6301, 1804, 6504, 1172, 1606, 1612, 6271, 6271,…
## $ Tanggal_Kejadian <date> 2023-05-28, 2023-05-28, 2023-05-28, 2023-05-28, 2023…
## $ Kejadian         <fct> TANAH LONGSOR, KEBAKARAN HUTAN DAN LAHAN, PUTING BELI…
## $ Lokasi           <chr> "Kec. Dawe Ds. Dukuh Waringin", "Kec.  Bati-Bati Ds. …
## $ Kabupaten        <fct> KUDUS, TANAH LAUT, LAMPUNG TIMUR, NUNUKAN, KOTA SABAN…
## $ Provinsi         <fct> JAWA TENGAH, KALIMANTAN SELATAN, LAMPUNG, KALIMANTAN …
## $ Penyebab         <chr> "Sejumlah 8 pekerja melakukan aktifitas pembenahan ta…
## $ Meninggal        <int> 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ Hilang           <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Terluka          <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Rumah_Rusak      <int> 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ Rumah_Terendam   <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2…
## $ Fasum_Rusak      <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…

Cek Missing Value

disaster %>% 
  is.na() %>% 
  colSums()
##     ID_Kabupaten Tanggal_Kejadian         Kejadian           Lokasi 
##                0                0                0               11 
##        Kabupaten         Provinsi         Penyebab        Meninggal 
##                0                0               16             1094 
##           Hilang          Terluka      Rumah_Rusak   Rumah_Terendam 
##             1141             1092                0              717 
##      Fasum_Rusak 
##                0

Replace NA

Karena pada data ditemukan banyak NA pada bagian meninggal, Hilang, Terluka, Rumah_Rusak, Rumah_Terendam artinya bahwa tidak ada seingga diganti dengan 0

disaster <- disaster %>% 
  mutate(Meninggal = coalesce(Meninggal,0)) %>% 
  mutate(Hilang = coalesce(Hilang,0)) %>% 
  mutate(Terluka = coalesce(Terluka,0)) %>% 
  mutate(Rumah_Rusak = coalesce(Rumah_Rusak,0)) %>% 
  mutate(Rumah_Terendam = coalesce(Rumah_Terendam,0))
disaster %>% 
  is.na()  %>% 
  colSums()
##     ID_Kabupaten Tanggal_Kejadian         Kejadian           Lokasi 
##                0                0                0               11 
##        Kabupaten         Provinsi         Penyebab        Meninggal 
##                0                0               16                0 
##           Hilang          Terluka      Rumah_Rusak   Rumah_Terendam 
##                0                0                0                0 
##      Fasum_Rusak 
##                0

Kolom kosong NA sudah terisi dengan 0 karena memang tidak ada jumlah yang meninggal/terluka tinggal kolom Lokasi dan Penyebab yang tidak diketahui sehingga kita drop baris nya yang kosong menggunakan na.omit

disaster_clean <- disaster %>% 
  na.omit(Lokasi, Penyebab)

Data sudah bersih tidak ada missing value / NA

Business Question

  1. Untuk bagian tab item pertama, tujuan nya yaitu untuk menampilkan output:
  • Jumlah Orang Meninggal, Jumlah Orang Terluka, Jumlah Rumah Rusak, Jumlah Rumah Terendam, dan Jumlah Fasilitas Umum Rusak di seluruh provinsi Indonesia berdasarkan Bulan dan berdasarkan Kejadian. sehingga User bisa memilih ingin melihat di bulan apa dan jenis kejadian bencana apa dengan mudah.

  • Melihat trend jumlah kejadian bencana di seluruh provinsi setap hari nya berdasarkan inputan bulan dan jenis kejadian bencana yang dipilih.

  • Melihat top 10 provinsi dengan kejadian bencana tertinggi yang dipilih menurut bulan dan kejadian nya.

Data Aggregation

disaster_clean %>% 
  is.na() %>% 
  colSums()
##     ID_Kabupaten Tanggal_Kejadian         Kejadian           Lokasi 
##                0                0                0                0 
##        Kabupaten         Provinsi         Penyebab        Meninggal 
##                0                0                0                0 
##           Hilang          Terluka      Rumah_Rusak   Rumah_Terendam 
##                0                0                0                0 
##      Fasum_Rusak 
##                0

mendapatkan data jumlah kejadian

dis <- disaster_clean %>%
  mutate(Bulan = month(Tanggal_Kejadian, label = TRUE, abbr = FALSE)) %>% 
  mutate(Tanggal = day(Tanggal_Kejadian))
dis
## # A tibble: 1,119 × 15
##    ID_Kabupaten Tanggal_…¹ Kejad…² Lokasi Kabup…³ Provi…⁴ Penye…⁵ Menin…⁶ Hilang
##    <fct>        <date>     <fct>   <chr>  <fct>   <fct>   <chr>     <dbl>  <dbl>
##  1 3319         2023-05-28 TANAH … Kec. … KUDUS   JAWA T… Sejuml…       3      0
##  2 6301         2023-05-28 KEBAKA… Kec. … TANAH … KALIMA… Masih …       0      0
##  3 1804         2023-05-28 PUTING… Kec. … LAMPUN… LAMPUNG Dipicu…       0      0
##  4 6504         2023-05-28 KEBAKA… Kec. … NUNUKAN KALIMA… Masih …       0      0
##  5 1172         2023-05-28 KEBAKA… Kec. … KOTA S… ACEH    Masih …       0      0
##  6 1606         2023-05-28 KEBAKA… Kec. … MUSI B… SUMATE… ●masih…       0      0
##  7 1612         2023-05-28 KEBAKA… Kec. … PENUKA… SUMATE… Masih …       0      0
##  8 6271         2023-05-28 KEBAKA… Kec. … KOTA P… KALIMA… Masih …       0      0
##  9 6271         2023-05-27 KEBAKA… Kec. … KOTA P… KALIMA… ●Masih…       0      0
## 10 1302         2023-05-27 KEBAKA… Kec. … PESISI… SUMATE… ●masih…       0      0
## # … with 1,109 more rows, 6 more variables: Terluka <dbl>, Rumah_Rusak <dbl>,
## #   Rumah_Terendam <dbl>, Fasum_Rusak <int>, Bulan <ord>, Tanggal <int>, and
## #   abbreviated variable names ¹​Tanggal_Kejadian, ²​Kejadian, ³​Kabupaten,
## #   ⁴​Provinsi, ⁵​Penyebab, ⁶​Meninggal
plot_agg_1 <- dis %>% 
  group_by(Kejadian) %>% 
  summarise(Jumlah_Kejadian = n()) %>% 
  arrange(desc(Jumlah_Kejadian))
plot_agg_1
## # A tibble: 8 × 2
##   Kejadian                  Jumlah_Kejadian
##   <fct>                               <int>
## 1 BANJIR                                468
## 2 PUTING BELIUNG                        330
## 3 TANAH LONGSOR                         213
## 4 KEBAKARAN HUTAN DAN LAHAN              82
## 5 GELOMBANG PASANG / ABRASI              12
## 6 GEMPA BUMI                             11
## 7 LETUSAN GUNUNG API                      2
## 8 KEKERINGAN                              1
     plot_agg_1 <-  plot_agg_1 %>% 
        mutate(label=glue("Kejadian :  {Kejadian}
      Jumlah Kejadian : {Jumlah_Kejadian} Kali"))
    
    # Plot Rangking Statis
    plot_ranking <- plot_agg_1 %>% 
      ggplot(mapping=aes(x = reorder(Kejadian,Jumlah_Kejadian),
                         y = Jumlah_Kejadian,
                         text = label)) + 
      geom_col(aes(fill = Kejadian)) +
    
      
      labs(title = "Jumlah Kejadian Bencana Bulan Menurut Jenis Bencana",
           x = NULL,
           y = "Kali") +
      
      theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.04),
            axis.ticks.y = element_blank(),
            panel.background = element_rect(fill = "#ffffff"), 
            panel.grid.major.x = element_line(colour = "grey"),
            axis.line.x = element_line(color = "grey"),
            axis.text.x = element_blank())
    
    # Plot Rangking Interaktif
    ggplotly(plot_ranking, tooltip = "text")

Menghilangkan Levels pada bulan

levels(dis$Bulan)
##  [1] "January"   "February"  "March"     "April"     "May"       "June"     
##  [7] "July"      "August"    "September" "October"   "November"  "December"
dis$Bulan <- droplevels(dis$Bulan)

Yang ikut seharusnya Januari hingga Mei

levels(dis$Bulan)
## [1] "January"  "February" "March"    "April"    "May"

Data Aggregation untuk mengetahui jumlah kejadian di setiap tanggal di setiap kategori bencana nya

plot_agg_2 <- dis %>% 
  group_by(Tanggal, Kejadian) %>% 
  summarise(Jumlah_Kejadian =n())
## `summarise()` has grouped output by 'Tanggal'. You can override using the
## `.groups` argument.
plot_agg_2
## # A tibble: 137 × 3
## # Groups:   Tanggal [31]
##    Tanggal Kejadian                  Jumlah_Kejadian
##      <int> <fct>                               <int>
##  1       1 BANJIR                                 17
##  2       1 GELOMBANG PASANG / ABRASI               2
##  3       1 GEMPA BUMI                              1
##  4       1 KEBAKARAN HUTAN DAN LAHAN               7
##  5       1 PUTING BELIUNG                         19
##  6       1 TANAH LONGSOR                           7
##  7       2 BANJIR                                 30
##  8       2 KEBAKARAN HUTAN DAN LAHAN               2
##  9       2 PUTING BELIUNG                         13
## 10       2 TANAH LONGSOR                          12
## # … with 127 more rows
plot_agg_2 <-  plot_agg_2 %>% 
  mutate(label=glue("Tanggal :  {Tanggal}
  Jenis Kejadian : {Kejadian}
  Jumlah Kejadian : {Jumlah_Kejadian} Kali"))

plot_trend <- plot_agg_2 %>% 
  ggplot(mapping = aes(x= Tanggal, y= Jumlah_Kejadian, text = label )) +
  geom_col(aes(color = Kejadian)) +
  
  labs(title = "Jumlah Kejadian Bencana Bulan",
        x = NULL,
        y = "Kali") +
  
  scale_x_continuous(breaks = seq(1,31,1)) +
  theme_classic()
    
    # # Plot Rangking Interaktif
    ggplotly(plot_trend, tooltip = "text")
    # 
plot2 <- plot_agg_2 %>% 
  ggplot(mapping = aes( x= Tanggal, 
                        y = Jumlah_Kejadian)) +
  geom_area(aes(color = Kejadian), fill = "#355C7D", linetype = "dashed") +
  geom_point(aes(color = Kejadian,
                  text = glue("Tanggal :  {Tanggal}
                                    Jenis Kejadian : {Kejadian}
                                    Jumlah Kejadian : {Jumlah_Kejadian} Kali"))) +
  
  
  scale_x_continuous(breaks = seq(1,31,1)) +
  
  labs(title = "Trend Jumlah Kejadian Bencana",
       subtitle = "Bulan",
       x = "Tanggal",
       y = "Jumlah Kejadian",
       color = "Jenis Bencana") +
  
  theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.04),
            axis.ticks.y = element_blank(),
            panel.background = element_rect(fill = "#ffffff"), 
            panel.grid.major.x = element_line(colour = "grey"),
            axis.line.x = element_line(color = "grey"),
            axis.text = element_text(size = 10, colour = "black"))
## Warning in geom_point(aes(color = Kejadian, text = glue("Tanggal : {Tanggal}\n
## Jenis Kejadian : {Kejadian}\n Jumlah Kejadian : {Jumlah_Kejadian} Kali"))):
## Ignoring unknown aesthetics: text
ggplotly(plot2, tooltip = "text")

Data Aggregation Value Box

# Mengetahui Jumlah Meninggal di Setiap Bulan dan Kejadian
mng <- dis %>% 
  group_by(Bulan, Kejadian) %>% 
  summarise(Jumlah_Meninggal = sum(Meninggal))
## `summarise()` has grouped output by 'Bulan'. You can override using the
## `.groups` argument.
mng
## # A tibble: 30 × 3
## # Groups:   Bulan [5]
##    Bulan    Kejadian                  Jumlah_Meninggal
##    <ord>    <fct>                                <dbl>
##  1 January  BANJIR                                  11
##  2 January  GELOMBANG PASANG / ABRASI                0
##  3 January  GEMPA BUMI                               0
##  4 January  KEBAKARAN HUTAN DAN LAHAN                0
##  5 January  PUTING BELIUNG                           0
##  6 January  TANAH LONGSOR                            4
##  7 February BANJIR                                   6
##  8 February GELOMBANG PASANG / ABRASI                0
##  9 February GEMPA BUMI                               4
## 10 February KEBAKARAN HUTAN DAN LAHAN                0
## # … with 20 more rows
sum(mng$Jumlah_Meninggal)
## [1] 145

data Ggregation Top Provinsi

plot_agg_3 <- dis %>% 
  group_by(Provinsi, Kejadian) %>% 
  summarise(Jumlah_Kejadian = n()) %>% 
  arrange(desc(Jumlah_Kejadian)) %>% 
  ungroup() %>% 
  top_n(10)
## `summarise()` has grouped output by 'Provinsi'. You can override using the
## `.groups` argument.
## Selecting by Jumlah_Kejadian
plot_agg_3
## # A tibble: 11 × 3
##    Provinsi            Kejadian       Jumlah_Kejadian
##    <fct>               <fct>                    <int>
##  1 JAWA BARAT          TANAH LONGSOR              103
##  2 JAWA BARAT          PUTING BELIUNG              97
##  3 JAWA BARAT          BANJIR                      52
##  4 JAWA TENGAH         PUTING BELIUNG              50
##  5 JAWA TENGAH         BANJIR                      46
##  6 JAWA TENGAH         TANAH LONGSOR               43
##  7 JAWA TIMUR          BANJIR                      43
##  8 NUSA TENGGARA BARAT BANJIR                      34
##  9 JAWA TIMUR          PUTING BELIUNG              31
## 10 ACEH                BANJIR                      27
## 11 SULAWESI TENGAH     BANJIR                      27
plot_agg_3 %>% 
  ggplot(mapping = aes(x= Jumlah_Kejadian , y= reorder(Provinsi, Jumlah_Kejadian))) +
  geom_col(aes(fill = Kejadian))

Bagian 2

levels(dis$Provinsi)
##  [1] "ACEH"                      "BALI"                     
##  [3] "BANTEN"                    "BENGKULU"                 
##  [5] "DI YOGYAKARTA"             "DKI JAKARTA"              
##  [7] "GORONTALO"                 "JAMBI"                    
##  [9] "JAWA BARAT"                "JAWA TENGAH"              
## [11] "JAWA TIMUR"                "KALIMANTAN BARAT"         
## [13] "KALIMANTAN SELATAN"        "KALIMANTAN TENGAH"        
## [15] "KALIMANTAN TIMUR"          "KALIMANTAN UTARA"         
## [17] "KEPULAUAN BANGKA BELITUNG" "KEPULAUAN RIAU"           
## [19] "LAMPUNG"                   "MALUKU"                   
## [21] "MALUKU UTARA"              "NUSA TENGGARA BARAT"      
## [23] "NUSA TENGGARA TIMUR"       "PAPUA"                    
## [25] "PAPUA BARAT"               "RIAU"                     
## [27] "SULAWESI BARAT"            "SULAWESI SELATAN"         
## [29] "SULAWESI TENGAH"           "SULAWESI TENGGARA"        
## [31] "SULAWESI UTARA"            "SUMATERA BARAT"           
## [33] "SUMATERA SELATAN"          "SUMATERA UTARA"
    plot_agg_3.1 <- dis %>%

      group_by(Bulan, Kejadian) %>% 
      summarise(Jumlah_Kejadian = n())
## `summarise()` has grouped output by 'Bulan'. You can override using the
## `.groups` argument.
    plot_agg_3.1 <- plot_agg_3.1 %>% 
      mutate(label= glue("Bulan : {Bulan} 
                          Jenis Bencana : {Kejadian}
                          Jumlah Kejadian : {Jumlah_Kejadian}"))
    
    plot3 <- plot_agg_3.1 %>% 
      ggplot(mapping = aes(x = Bulan, y = Jumlah_Kejadian, text = label)) +
      geom_col() 
    plot3

kejadianperbulan <- as.data.frame(table(dis$Kejadian))
names(kejadianperbulan) <- c("Kejadian", "Freq")

head(kejadianperbulan)
##                    Kejadian Freq
## 1                    BANJIR  468
## 2 GELOMBANG PASANG / ABRASI   12
## 3                GEMPA BUMI   11
## 4 KEBAKARAN HUTAN DAN LAHAN   82
## 5                KEKERINGAN    1
## 6        LETUSAN GUNUNG API    2