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 outflow uang kartal di pulau Suamtera. 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 outflow uang kartal di pulau Sumatera. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.

Data Outflow Uang Kartal di Pulau Sumatera

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 sumatera.xlsx")
dataoutflow 
## # A tibble: 11 x 12
##    Provinsi     `2011` `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>         <dbl>  <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera     80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
##  2 Aceh          6338.  6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
##  3 Sumatera Ut~ 22176. 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
##  4 Sumatera Ba~  5300.  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
##  5 Riau         12434. 13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
##  6 Kep. Riau     5819.  6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
##  7 Jambi         5217.  5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
##  8 Sumatera Se~ 14524. 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
##  9 Bengkulu      2561.  2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung       5724.  6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~     0      0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 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

sum2011 <- select(dataoutflow, '2011')
sum2011
## # A tibble: 11 x 1
##    `2011`
##     <dbl>
##  1 80092.
##  2  6338.
##  3 22176.
##  4  5300.
##  5 12434.
##  6  5819.
##  7  5217.
##  8 14524.
##  9  2561.
## 10  5724.
## 11     0

Menghapus Variabel yang Tidak Ingin Digunakan

sum2 <- select(dataoutflow, `2013`, `2014`, `2015`, `2019`, `2021`)
sum2
## # A tibble: 11 x 5
##     `2013`  `2014`  `2015`  `2019` `2021`
##      <dbl>   <dbl>   <dbl>   <dbl>  <dbl>
##  1 103288. 102338. 109186. 153484. 86627.
##  2  23278.   8630.   9637.  13087.  5770.
##  3  19235.  26391.  27877.  44051. 23453.
##  4   6511.   7060.   7471.   9465.  5941.
##  5  15460.  15158.  15789.  19277. 12631.
##  6   8747.  10122.   9803.  12644.  5128.
##  7   6302.   8361.   8325.   9204.  6046.
##  8  12693.  13372.  13484.  19121. 11436.
##  9   6490.   4583.   4852.   6842.  4681.
## 10   4571.   8339.   9946.  15626.  8050.
## 11      0     322.   2005.   4167.  3493.

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)
sumnon2011 <- select(dataoutflow, -'2011')
sumnon2011
## # A tibble: 11 x 11
##    Provinsi     `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##    <chr>         <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera     85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
##  2 Aceh          6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4 1.29e4
##  3 Sumatera Ut~ 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
##  4 Sumatera Ba~  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
##  5 Riau         13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4 1.91e4
##  6 Kep. Riau     6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4 8.46e3
##  7 Jambi         5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
##  8 Sumatera Se~ 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
##  9 Bengkulu      2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 10 Lampung       6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 11 Kep. Bangka~     0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>

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

sum3 <- dataoutflow %>%
  select(tahun = `2014`, `2018`, `2019`)
sum3
## # A tibble: 11 x 3
##      tahun  `2018`  `2019`
##      <dbl>   <dbl>   <dbl>
##  1 102338. 135676. 153484.
##  2   8630.  11450.  13087.
##  3  26391.  36908.  44051.
##  4   7060.   8447.   9465.
##  5  15158.  17926.  19277.
##  6  10122.  12597.  12644.
##  7   8361.   8459.   9204.
##  8  13372.  17931.  19121.
##  9   4583.   5495.   6842.
## 10   8339.  13725.  15626.
## 11    322.   2738.   4167.

Mengganti Nama Variabel

library(dplyr)
sum4 <- dataoutflow %>% rename('2010' = '2011')
head(sum4)
## # 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Aceh      6338.  6378. 2.33e4 8.63e3 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4 1.29e4
## 3 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 4 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 5 Riau     12434. 13014. 1.55e4 1.52e4 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4 1.91e4
## 6 Kep. Ri~  5819.  6966. 8.75e3 1.01e4 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4 8.46e3
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

sum5 <- distinct(dataoutflow, `2017`)
sum5
## # A tibble: 11 x 1
##     `2017`
##      <dbl>
##  1 133606.
##  2  11760.
##  3  35243.
##  4  10754.
##  5  18128.
##  6  10749.
##  7   8434.
##  8  16981.
##  9   5447.
## 10  13359.
## 11   2750.

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

sum6 <- distinct(dataoutflow, `2017`, .keep_all = TRUE)
sum6
## # A tibble: 11 x 12
##    Provinsi     `2011` `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>         <dbl>  <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera     80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
##  2 Aceh          6338.  6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
##  3 Sumatera Ut~ 22176. 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
##  4 Sumatera Ba~  5300.  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
##  5 Riau         12434. 13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
##  6 Kep. Riau     5819.  6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
##  7 Jambi         5217.  5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
##  8 Sumatera Se~ 14524. 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
##  9 Bengkulu      2561.  2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung       5724.  6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~     0      0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menyeleksi Baris pada Variabel

sum7 <- dataoutflow %>%
  filter(Provinsi <= 'Sumatera') %>%
    select(`2015`,`2016`)
sum7
## # A tibble: 8 x 2
##    `2015`  `2016`
##     <dbl>   <dbl>
## 1 109186. 121992.
## 2   9637.  11311.
## 3  15789.  17645.
## 4   9803.  10068.
## 5   8325.   7774.
## 6   4852.   5163.
## 7   9946.  10436.
## 8   2005.   2684.
sum8 <- dataoutflow %>%
  filter(Provinsi == 'Sumatera', Provinsi == 'Sumatera Utara') %>%
    select( -`2016`)
sum8
## # 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 [11 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:11] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
##  $ 2011    : num [1:11] 80092 6338 22176 5300 12434 ...
##  $ 2012    : num [1:11] 85235 6378 22495 6434 13014 ...
##  $ 2013    : num [1:11] 103288 23278 19235 6511 15460 ...
##  $ 2014    : num [1:11] 102338 8630 26391 7060 15158 ...
##  $ 2015    : num [1:11] 109186 9637 27877 7471 15789 ...
##  $ 2016    : num [1:11] 121992 11311 31959 9198 17645 ...
##  $ 2017    : num [1:11] 133606 11760 35243 10754 18128 ...
##  $ 2018    : num [1:11] 135676 11450 36908 8447 17926 ...
##  $ 2019    : num [1:11] 153484 13087 44051 9465 19277 ...
##  $ 2020    : num [1:11] 140589 12874 39758 8763 19139 ...
##  $ 2021    : num [1:11] 86627 5770 23453 5941 12631 ...
str(dataoutflow %>% group_by(Provinsi))
## grouped_df [11 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:11] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
##  $ 2011    : num [1:11] 80092 6338 22176 5300 12434 ...
##  $ 2012    : num [1:11] 85235 6378 22495 6434 13014 ...
##  $ 2013    : num [1:11] 103288 23278 19235 6511 15460 ...
##  $ 2014    : num [1:11] 102338 8630 26391 7060 15158 ...
##  $ 2015    : num [1:11] 109186 9637 27877 7471 15789 ...
##  $ 2016    : num [1:11] 121992 11311 31959 9198 17645 ...
##  $ 2017    : num [1:11] 133606 11760 35243 10754 18128 ...
##  $ 2018    : num [1:11] 135676 11450 36908 8447 17926 ...
##  $ 2019    : num [1:11] 153484 13087 44051 9465 19277 ...
##  $ 2020    : num [1:11] 140589 12874 39758 8763 19139 ...
##  $ 2021    : num [1:11] 86627 5770 23453 5941 12631 ...
##  - attr(*, "groups")= tibble [11 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:11] "Aceh" "Bengkulu" "Jambi" "Kep. Bangka Bellitung" ...
##   ..$ .rows   : list<int> [1:11] 
##   .. ..$ : int 2
##   .. ..$ : int 9
##   .. ..$ : int 7
##   .. ..$ : int 11
##   .. ..$ : int 6
##   .. ..$ : int 10
##   .. ..$ : int 5
##   .. ..$ : int 1
##   .. ..$ : int 4
##   .. ..$ : int 8
##   .. ..$ : int 3
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan Data

sumup <- dataoutflow %>%
    group_by(Provinsi)
sumup
## # A tibble: 11 x 12
## # Groups:   Provinsi [11]
##    Provinsi     `2011` `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>         <dbl>  <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera     80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
##  2 Aceh          6338.  6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
##  3 Sumatera Ut~ 22176. 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
##  4 Sumatera Ba~  5300.  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
##  5 Riau         12434. 13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
##  6 Kep. Riau     5819.  6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
##  7 Jambi         5217.  5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
##  8 Sumatera Se~ 14524. 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
##  9 Bengkulu      2561.  2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung       5724.  6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~     0      0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Mengurutkan Data

sumubah <- arrange(dataoutflow, `2013`)
sumubah
## # A tibble: 11 x 12
##    Provinsi     `2011` `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>         <dbl>  <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Kep. Bangka~     0      0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
##  2 Lampung       5724.  6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
##  3 Jambi         5217.  5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
##  4 Bengkulu      2561.  2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
##  5 Sumatera Ba~  5300.  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
##  6 Kep. Riau     5819.  6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
##  7 Sumatera Se~ 14524. 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
##  8 Riau         12434. 13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
##  9 Sumatera Ut~ 22176. 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 10 Aceh          6338.  6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 11 Sumatera     80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menambahkan Variabel pada Tabel

sumup1 <- dataoutflow %>%
    mutate(`2021` = dataoutflow$`2020`/2)
sumup1
## # A tibble: 11 x 12
##    Provinsi     `2011` `2012`  `2013`  `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>         <dbl>  <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera     80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
##  2 Aceh          6338.  6378.  23278.   8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
##  3 Sumatera Ut~ 22176. 22495.  19235.  26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
##  4 Sumatera Ba~  5300.  6434.   6511.   7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
##  5 Riau         12434. 13014.  15460.  15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
##  6 Kep. Riau     5819.  6966.   8747.  10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
##  7 Jambi         5217.  5013.   6302.   8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
##  8 Sumatera Se~ 14524. 15600.  12693.  13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
##  9 Bengkulu      2561.  2959.   6490.   4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung       5724.  6376.   4571.   8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~     0      0       0     322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 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