Universitas : UIN MAULANA MALIK IBRAHIM MALANG

Jurusan : Teknik Informatika

Manipulasi Data dengan dplyr

Dalam melakukan manipulasi data di R kita dapat menggunakan package dplyr. Package ini dibuat oleh Handley Wickham dan Roman Francois yang berisi kumpulan fungsi yang memudahkan manipulasi data yaitu antara lain:

sample() untuk mengambil sampel secara acak dari tabel

mutate() untuk menambah kolom

select() untuk mengambil data atau variabel yang dibutuhkan

arrange() untuk mengurutkan data

filter() untuk menyaring data

groupby() untuk mengelompokkan data

Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi. Cara menginstall package dplyr yaitu sebagai berikut:

install.package(dplyr)

Sedangkan untuk memanggil dplyr yaitu dengan sintaks:

library(dplyr)

Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi.

library(readxl)
datainflowjawa <- read_excel(path = "InflowTahunJawa.xlsx")
datainflowjawa
## # A tibble: 7 x 12
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## 7 DKI Jak~ 6.30e4 7.67e4 8.45e4 9.21e4 1.00e5 1.16e5 1.12e5 1.26e5 1.43e5 1.11e5
## # ... with 1 more variable: `2021` <dbl>
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.8
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Manipulasi Data Inflow Uang Kartal di Pulau Jawa pada Tahun 2016

jawa2 <- select(datainflowjawa,'Provinsi', '2016')
jawa2
## # A tibble: 7 x 2
##   Provinsi     `2016`
##   <chr>         <dbl>
## 1 Jawa        261607.
## 2 Jawa Barat   88036.
## 3 Jawa Tengah  72782.
## 4 Yogyakarta   17350.
## 5 Jawa Timur   83439.
## 6 Banten           0 
## 7 DKI Jakarta 115684.

Manipulasi Data Inflow Uang Kartal di Pulau Jawa Tanpa Tahun 2013

jawa3 <- select(datainflowjawa, -'2013')
jawa3
## # A tibble: 7 x 11
##   Provinsi `2011` `2012` `2014` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.24e5 1.60e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5 1.88e5
## 2 Jawa Ba~ 4.38e4 6.06e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4 5.73e4
## 3 Jawa Te~ 3.51e4 4.33e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4 6.20e4
## 4 Yogyaka~ 6.49e3 9.17e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3 6.71e3
## 5 Jawa Ti~ 3.85e4 4.74e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4 5.90e4
## 6 Banten   0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3 2.80e3
## 7 DKI Jak~ 6.30e4 7.67e4 9.21e4 1.00e5 1.16e5 1.12e5 1.26e5 1.43e5 1.11e5 8.55e4

Manipulasi Data Inflow Uang Kartal di Pulau Jawa pada Tahun 2012-2016

jawa4 <- datainflowjawa %>% select('Provinsi', '2012', '2013', '2014' , '2015' , '2016')
jawa4
## # A tibble: 7 x 6
##   Provinsi     `2012`  `2013`  `2014`  `2015`  `2016`
##   <chr>         <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Jawa        160482. 134998. 217303. 230141. 261607.
## 2 Jawa Barat   60629.  35190.  78660.  81303.  88036.
## 3 Jawa Tengah  43298.  42182.  60476.  65198.  72782.
## 4 Yogyakarta    9173.   8939.  13890.  14831.  17350.
## 5 Jawa Timur   47383.  48687.  64276.  68808.  83439.
## 6 Banten           0       0       0       0       0 
## 7 DKI Jakarta  76665.  84526.  92106. 100426. 115684.

Manipulasi Data Inflow Uang Kartal di Pulau Jawa dengan Menambah Tulisan Tahun di Tiap Tahunnya

jawa5 <- datainflowjawa %>% rename('Tahun 2011' = '2011' , 'Tahun 2012' = '2012' , 'Tahun 2013' = '2013' , 'Tahun 2014' = '2014' , 'Tahun 2015' = '2015' , 'Tahun 2016' = '2016' , 'Tahun 2017' = '2017' , 'Tahun 2018' = '2018' , 'Tahun 2019' = '2019' , 'Tahun 2020' = '2020' , 'Tahun 2021' = '2021')
head(jawa5)
## # A tibble: 6 x 12
##   Provinsi    `Tahun 2011` `Tahun 2012` `Tahun 2013` `Tahun 2014` `Tahun 2015`
##   <chr>              <dbl>        <dbl>        <dbl>        <dbl>        <dbl>
## 1 Jawa             123917.      160482.      134998.      217303.      230141.
## 2 Jawa Barat        43775.       60629.       35190.       78660.       81303.
## 3 Jawa Tengah       35137.       43298.       42182.       60476.       65198.
## 4 Yogyakarta         6490.        9173.        8939.       13890.       14831.
## 5 Jawa Timur        38515.       47383.       48687.       64276.       68808.
## 6 Banten                0            0            0            0            0 
## # ... with 6 more variables: `Tahun 2016` <dbl>, `Tahun 2017` <dbl>,
## #   `Tahun 2018` <dbl>, `Tahun 2019` <dbl>, `Tahun 2020` <dbl>,
## #   `Tahun 2021` <dbl>

Manipulasi Data Inflow Uang Kartal di Pulau Jawa dengan Mengambil Data Provinsi Jawa Timur pada Tahun 2014-2019

jawa6 <- datainflowjawa %>%
    filter(Provinsi == 'Jawa Timur') %>%
    select( 'Provinsi', '2014','2015', '2016','2017', '2018', '2019')
jawa6
## # A tibble: 1 x 7
##   Provinsi   `2014` `2015` `2016` `2017`  `2018`  `2019`
##   <chr>       <dbl>  <dbl>  <dbl>  <dbl>   <dbl>   <dbl>
## 1 Jawa Timur 64276. 68808. 83439. 98380. 106433. 113651.

Struktur Data Inflow Uang Kartal di Pulau Jawa

str(datainflowjawa)
## tibble [7 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:7] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:7] 123917 43775 35137 6490 38515 ...
##  $ 2012    : num [1:7] 160482 60629 43298 9173 47383 ...
##  $ 2013    : num [1:7] 134998 35190 42182 8939 48687 ...
##  $ 2014    : num [1:7] 217303 78660 60476 13890 64276 ...
##  $ 2015    : num [1:7] 230141 81303 65198 14831 68808 ...
##  $ 2016    : num [1:7] 261607 88036 72782 17350 83439 ...
##  $ 2017    : num [1:7] 277609 83220 77031 17483 98380 ...
##  $ 2018    : num [1:7] 306911 87243 87829 20574 106433 ...
##  $ 2019    : num [1:7] 324624 94846 90751 20899 113651 ...
##  $ 2020    : num [1:7] 259444 76883 84970 7348 86848 ...
##  $ 2021    : num [1:7] 187816 57295 62024 6714 58986 ...
str(datainflowjawa %>% group_by(Provinsi))
## grouped_df [7 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:7] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:7] 123917 43775 35137 6490 38515 ...
##  $ 2012    : num [1:7] 160482 60629 43298 9173 47383 ...
##  $ 2013    : num [1:7] 134998 35190 42182 8939 48687 ...
##  $ 2014    : num [1:7] 217303 78660 60476 13890 64276 ...
##  $ 2015    : num [1:7] 230141 81303 65198 14831 68808 ...
##  $ 2016    : num [1:7] 261607 88036 72782 17350 83439 ...
##  $ 2017    : num [1:7] 277609 83220 77031 17483 98380 ...
##  $ 2018    : num [1:7] 306911 87243 87829 20574 106433 ...
##  $ 2019    : num [1:7] 324624 94846 90751 20899 113651 ...
##  $ 2020    : num [1:7] 259444 76883 84970 7348 86848 ...
##  $ 2021    : num [1:7] 187816 57295 62024 6714 58986 ...
##  - attr(*, "groups")= tibble [7 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:7] "Banten" "DKI Jakarta" "Jawa" "Jawa Barat" ...
##   ..$ .rows   : list<int> [1:7] 
##   .. ..$ : int 6
##   .. ..$ : int 7
##   .. ..$ : int 1
##   .. ..$ : int 2
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 4
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan Data Inflow Uang Kartal di Pulau Jawa

jawa7 <- datainflowjawa %>%
    group_by(Provinsi)
jawa7
## # A tibble: 7 x 12
## # Groups:   Provinsi [7]
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## 7 DKI Jak~ 6.30e4 7.67e4 8.45e4 9.21e4 1.00e5 1.16e5 1.12e5 1.26e5 1.43e5 1.11e5
## # ... with 1 more variable: `2021` <dbl>

Mengurutkan Data Inflow Uang Kartal di Pulau Jawa

jawa8 <- arrange (datainflowjawa, `2011`)
jawa8
## # A tibble: 7 x 12
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## 2 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 5 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 6 DKI Jak~ 6.30e4 7.67e4 8.45e4 9.21e4 1.00e5 1.16e5 1.12e5 1.26e5 1.43e5 1.11e5
## 7 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## # ... with 1 more variable: `2021` <dbl>

Menambah kolom pada Data Inflow Uang Kartal di Pulau Jawa

jawa9 <- datainflowjawa %>%
    mutate(`2012` = datainflowjawa$`2013`/2)
jawa9
## # A tibble: 7 x 12
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.24e5 67499. 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 17595. 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 21091. 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3  4470. 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 24343. 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0          0  0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## 7 DKI Jak~ 6.30e4 42263. 8.45e4 9.21e4 1.00e5 1.16e5 1.12e5 1.26e5 1.43e5 1.11e5
## # ... with 1 more variable: `2021` <dbl>

Visualisasi Data Inflow Uang Kartal di Pulau Jawa pada Tahun 2021

ggplot(data = datainflowjawa, mapping = aes(x = Provinsi, y = `2021`)) +
  geom_bar(stat = "identity")