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)
dataoutflowjawa <- read_excel(path = "OutflowTahunJawa.xlsx")
dataoutflowjawa
## # 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     8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten   0      0      0      0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... 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 Outflow Uang Kartal di Pulau Jawa pada Tahun 2017

jawa2 <- select(dataoutflowjawa,'Provinsi', '2017')
jawa2
## # A tibble: 7 x 2
##   Provinsi     `2017`
##   <chr>         <dbl>
## 1 Jawa        228905.
## 2 Jawa Barat   53825.
## 3 Jawa Tengah  62761.
## 4 Yogyakarta   16810.
## 5 Jawa Timur   93396.
## 6 Banten        2113.
## 7 DKI Jakarta 181553.

Manipulasi Data Outflow Uang Kartal di Pulau Jawa Tanpa Tahun 2019

jawa3 <- select(dataoutflowjawa, -'2019')
jawa3
## # A tibble: 7 x 11
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.51e5 1.43e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 5.72e4 3.48e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.23e4 4.45e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 1.66e4 9.65e3
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 9.34e4 4.60e4
## 6 Banten   0      0      0      0      0      0      2.11e3 4.05e3 1.18e4 8.44e3
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.64e5 9.40e4

Manipulasi Data Outflow Uang Kartal di Pulau Jawa pada Tahun 2017-2021

jawa4 <- dataoutflowjawa %>% select('Provinsi', '2017', '2018', '2019' , '2020' , '2021')
jawa4
## # A tibble: 7 x 6
##   Provinsi     `2017`  `2018`  `2019`  `2020`  `2021`
##   <chr>         <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Jawa        228905. 253125. 271957. 251363. 143340.
## 2 Jawa Barat   53825.  61358.  61692.  57235.  34763.
## 3 Jawa Tengah  62761.  69368.  72363.  72342.  44455.
## 4 Yogyakarta   16810.  20357.  21353.  16619.   9652.
## 5 Jawa Timur   93396.  97995. 105514.  93374.  46029.
## 6 Banten        2113.   4047.  11035.  11793.   8441.
## 7 DKI Jakarta 181553. 187820. 197818. 163779.  94033.

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

jawa5 <- dataoutflowjawa %>% 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              83511.      111363.       98969.      147069.      171568.
## 2 Jawa Barat        20782.       28895.       23067.       40857.       47063.
## 3 Jawa Tengah       19975.       28493.       29529.       39110.       46840.
## 4 Yogyakarta         7538.        9486.        9708.       13171.       14080.
## 5 Jawa Timur        35217.       44489.       36665.       53931.       63585.
## 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 Outflow Uang Kartal di Pulau Jawa dengan Mengambil Data Provinsi Jawa Barat pada Tahun 2015-2020

jawa6 <- dataoutflowjawa %>%
    filter(Provinsi == 'Jawa Barat') %>%
    select( 'Provinsi', '2015','2016', '2017','2018', '2019', '2020')
jawa6
## # A tibble: 1 x 7
##   Provinsi   `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>       <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa Barat 47063. 49405. 53825. 61358. 61692. 57235.

Struktur Data Outflow Uang Kartal di Pulau Jawa

str(dataoutflowjawa)
## tibble [7 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:7] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:7] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:7] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:7] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:7] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:7] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:7] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:7] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:7] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:7] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:7] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:7] 143340 34763 44455 9652 46029 ...
str(dataoutflowjawa %>% 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] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:7] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:7] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:7] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:7] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:7] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:7] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:7] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:7] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:7] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:7] 143340 34763 44455 9652 46029 ...
##  - 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 Outlfow Uang Kartal di Pulau Jawa

jawa7 <- dataoutflowjawa %>%
    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     8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten   0      0      0      0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>

Mengurutkan Data Outflow Uang Kartal di Pulau Jawa

jawa8 <- arrange (dataoutflowjawa, `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      2.11e3 4.05e3 1.10e4 1.18e4
## 2 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Jawa     8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>

Menambah kolom pada Data Outflow Uang Kartal di Pulau Jawa

jawa9 <- dataoutflowjawa %>%
    mutate(`2012` = dataoutflowjawa$`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     8.35e4 49485. 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 11533. 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 14765. 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3  4854. 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 18333. 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten   0          0  0      0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 74620. 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>

Visualisasi Data Outflow Uang Kartal di Pulau Jawa pada Tahun 2021

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