Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika

Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data inflow uang kartal di pulau Jawa. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.

1. Manipulasi Data dengan Library dplyr

Manipulasi data merupakan proses pengolahan data yang mana data tersebut direkayasa untuk menghilangkan kebenaran identitas dari data tersebut. Manipulasi data juga bisa digunakan dengan tujuan untuk mengubah data agar lebih mudah untuk dibaca.

Pada bahasa pemrograman R, manipulasi data dilakukan menggunakan package dplyr di RSudio. Package ini ditemukan oleh Hadley Wickham dan Roman Francois. Ada beberapa fungsi yang didapat setelah kita menginstall package dplyr, yaitu diantaranya :

Berikut cara untuk menginstall package dplyr : install.package(dplyr) Untuk memanggil package dplyr maka menggunakan sintaks : library(dplyr)

Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data inflow uang kartal di pulau Jawa. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.

Data Outflow Uang Kartal di Pulau Jawa

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
dataoutflow <- read_excel(path = "C:/Users/User/Documents/SEMESTER 2/LINEAR ALGEBRA/pivot outflow jawa.xlsx")
dataoutflow 
## # A tibble: 6 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     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... 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.4     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Memilih Variabel yang Ingin Ditampilkan

jawa2011 <- select(dataoutflow, '2011')
jawa2011
## # A tibble: 6 x 1
##   `2011`
##    <dbl>
## 1 83511.
## 2 20782.
## 3 19975.
## 4  7538.
## 5 35217.
## 6     0

Menghapus Variabel yang Tidak Ingin Digunakan

jawa2 <- select(dataoutflow, `2013`, `2014`, `2015`, `2019`, `2021`)
jawa2
## # A tibble: 6 x 5
##   `2013`  `2014`  `2015`  `2019`  `2021`
##    <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 98969. 147069. 171568. 271957. 143340.
## 2 23067.  40857.  47063.  61692.  34763.
## 3 29529.  39110.  46840.  72363.  44455.
## 4  9708.  13171.  14080.  21353.   9652.
## 5 36665.  53931.  63585. 105514.  46029.
## 6     0       0       0   11035.   8441.

Sintaks diatas digunakan untuk memanggil beberapa variabel dan tidak mengikutsertakan beberapa variabel lainnya. Seperti tahun 2011, 2012, 2016, 2017, 2018, dan 2020 yang tidak termasuk dalam pemanggilan.

Apabila variabel yang ingin dihilangkan dalam pemanggilan hanya satu, maka kita dapat menggunakan fungsi select() kemudian memberikan tanda minus (-) pada variabel yang ingin dihapus. Berikut adalah contoh sintaksnya :

library(tidyverse)
jawanon2011 <- select(dataoutflow, -'2011')
jawanon2011
## # A tibble: 6 x 11
##   Provinsi `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5 1.43e5
## 2 Jawa Ba~ 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4 3.48e4
## 3 Jawa Te~ 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4 4.45e4
## 4 Yogyaka~ 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4 9.65e3
## 5 Jawa Ti~ 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4 4.60e4
## 6 Banten   0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4 8.44e3

Selain untuk memanggil suatu variabel, fungsi select() juga dapat digunakan untuk mengganti nama variabel.

jawa3 <- dataoutflow %>%
  select(tahun = `2014`, `2018`, `2019`)
jawa3
## # A tibble: 6 x 3
##     tahun  `2018`  `2019`
##     <dbl>   <dbl>   <dbl>
## 1 147069. 253125. 271957.
## 2  40857.  61358.  61692.
## 3  39110.  69368.  72363.
## 4  13171.  20357.  21353.
## 5  53931.  97995. 105514.
## 6      0    4047.  11035.

Mengganti Nama Variabel

library(dplyr)
jawa4 <- dataoutflow %>% rename('2010' = '2011')
head(jawa4)
## # A tibble: 6 x 12
##   Provinsi `2010` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

jawa5 <- distinct(dataoutflow, `2017`)
jawa5
## # A tibble: 6 x 1
##    `2017`
##     <dbl>
## 1 228905.
## 2  53825.
## 3  62761.
## 4  16810.
## 5  93396.
## 6   2113.

Untuk mengambil nilai dari semua baris pada suatu variabel, maka kita menambahkan .keep_all = TRUE

jawa6 <- distinct(dataoutflow, `2017`, .keep_all = TRUE)
jawa6
## # A tibble: 6 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     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>

Menyeleksi Baris pada Variabel

jawa7 <- dataoutflow %>%
  filter(Provinsi <= 'Jawa') %>%
    select(`2015`,`2016`)
jawa7
## # A tibble: 2 x 2
##    `2015`  `2016`
##     <dbl>   <dbl>
## 1 171568. 190568.
## 2      0       0
jawa8 <- dataoutflow %>%
  filter(Provinsi == 'Jawa', Provinsi == 'Jawa Barat') %>%
    select( -`2016`)
jawa8
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(dataoutflow)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:6] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:6] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:6] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:6] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:6] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:6] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:6] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:6] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:6] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:6] 143340 34763 44455 9652 46029 ...
str(dataoutflow %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:6] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:6] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:6] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:6] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:6] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:6] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:6] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:6] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:6] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:6] 143340 34763 44455 9652 46029 ...
##  - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:6] "Banten" "Jawa" "Jawa Barat" "Jawa Tengah" ...
##   ..$ .rows   : list<int> [1:6] 
##   .. ..$ : int 6
##   .. ..$ : int 1
##   .. ..$ : int 2
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 4
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan Data

jawaup <- dataoutflow %>%
    group_by(Provinsi)
jawaup
## # A tibble: 6 x 12
## # Groups:   Provinsi [6]
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>

Mengurutkan Data

jawaubah <- arrange(dataoutflow, `2013`)
jawaubah
## # A tibble: 6 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~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 3 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 4 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Variabel pada Tabel

jawaup1 <- dataoutflow %>%
    mutate(`2021` = dataoutflow$`2020`/2)
jawaup1
## # A tibble: 6 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     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>

2. Visualisasi Data dengan ggplot

ggplot(data = dataoutflow, mapping = aes(Provinsi, `2011`, color = Provinsi)) +
  geom_point()


Sumber :

https://rpubs.com/suhartono-uinmaliki/868598

https://www.bi.go.id/id/statistik/ekonomi-keuangan/ssp/indikator-pengedaran-uang.aspx

https://dplyr.tidyverse.org/

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00