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

Data Inflow Uang Kartal di Pulau Sumatera

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
datainflow <- read_excel(path = "C:/Users/User/Documents/SEMESTER 2/LINEAR ALGEBRA/pivot inflow sumatera.xlsx")
datainflow 
## # 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      57900. 65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh           2308.  2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Uta~ 23238. 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Bar~  9385. 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau           3012.  4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau      1426.  2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi          1868.  2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sel~  7820.  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu       1153.  1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung        7690.  6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~     0      0      0     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3
## # ... 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(datainflow, '2011')
sum2011
## # A tibble: 11 x 1
##    `2011`
##     <dbl>
##  1 57900.
##  2  2308.
##  3 23238.
##  4  9385.
##  5  3012.
##  6  1426.
##  7  1868.
##  8  7820.
##  9  1153.
## 10  7690.
## 11     0

Menghapus Variabel yang Tidak Ingin Digunakan

sum2 <- select(datainflow, `2013`, `2014`, `2015`, `2019`, `2021`)
sum2
## # A tibble: 11 x 5
##    `2013`  `2014` `2015`  `2019` `2021`
##     <dbl>   <dbl>  <dbl>   <dbl>  <dbl>
##  1 98369. 86024.  86549. 133762. 89270.
##  2 36337.  4567.   4710.   7509.  3702.
##  3 18120. 30503.  30254.  47112. 31840.
##  4 14056. 14103.  13309.  14750. 10748.
##  5  8933.  6358.   7156.  10915.  7769.
##  6  3378.  2563.   3218.   6077.  5009.
##  7  3047.  5169.   4978.   6486.  4980.
##  8  8647. 10038.  10797.  14812.  9106.
##  9  2378.  3262.   2791.   5789.  4160.
## 10  3474.  9448.   8160.  17046. 10697.
## 11     0     13.7  1177.   3265.  1259.

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(datainflow, -'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      65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
##  2 Aceh           2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3 6.64e3
##  3 Sumatera Uta~ 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
##  4 Sumatera Bar~ 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
##  5 Riau           4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4 9.15e3
##  6 Kep. Riau      2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3 6.18e3
##  7 Jambi          2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
##  8 Sumatera Sel~  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
##  9 Bengkulu       1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 10 Lampung        6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 11 Kep. Bangka ~     0      0     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... with 1 more variable: 2021 <dbl>

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

sum3 <- datainflow %>%
  select(tahun = `2014`, `2018`, `2019`)
sum3
## # A tibble: 11 x 3
##      tahun  `2018`  `2019`
##      <dbl>   <dbl>   <dbl>
##  1 86024.  117495. 133762.
##  2  4567.    5799.   7509.
##  3 30503.   41769.  47112.
##  4 14103.   15058.  14750.
##  5  6358.   10730.  10915.
##  6  2563.    5134.   6077.
##  7  5169.    5657.   6486.
##  8 10038.   14267.  14812.
##  9  3262.    4150.   5789.
## 10  9448.   13415.  17046.
## 11    13.7   1517.   3265.

Mengganti Nama Variabel

library(dplyr)
sum4 <- datainflow %>% 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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Aceh      2308.  2620. 36337.  4567.  4710.  5775. 5.51e3 5.80e3 7.51e3 6.64e3
## 3 Sumater~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 4 Sumater~  9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 5 Riau      3012.  4447.  8933.  6358.  7156.  8211. 8.55e3 1.07e4 1.09e4 9.15e3
## 6 Kep. Ri~  1426.  2236.  3378.  2563.  3218.  4317. 4.41e3 5.13e3 6.08e3 6.18e3
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

sum5 <- distinct(datainflow, `2017`)
sum5
## # A tibble: 11 x 1
##     `2017`
##      <dbl>
##  1 103748.
##  2   5514.
##  3  35617.
##  4  15312.
##  5   8553.
##  6   4412.
##  7   4404.
##  8  13075.
##  9   3620.
## 10  12078.
## 11   1164.

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

sum6 <- distinct(datainflow, `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      57900. 65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh           2308.  2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Uta~ 23238. 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Bar~  9385. 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau           3012.  4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau      1426.  2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi          1868.  2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sel~  7820.  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu       1153.  1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung        7690.  6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~     0      0      0     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menyeleksi Baris pada Variabel

Untuk menyeleksi baris berdasarkan nilainya, maka digunakan fungsi filter()

sum7 <- datainflow %>%
  filter(Provinsi <= 'Jawa') %>%
    select(`2015`,`2016`)
sum7
## # A tibble: 3 x 2
##   `2015` `2016`
##    <dbl>  <dbl>
## 1  4710.  5775.
## 2  4978.  4398.
## 3  2791.  2889.
sum8 <- datainflow %>%
  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(datainflow)
## tibble [11 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:11] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
##  $ 2011    : num [1:11] 57900 2308 23238 9385 3012 ...
##  $ 2012    : num [1:11] 65911 2620 25981 11192 4447 ...
##  $ 2013    : num [1:11] 98369 36337 18120 14056 8933 ...
##  $ 2014    : num [1:11] 86024 4567 30503 14103 6358 ...
##  $ 2015    : num [1:11] 86549 4710 30254 13309 7156 ...
##  $ 2016    : num [1:11] 97764 5775 34427 14078 8211 ...
##  $ 2017    : num [1:11] 103748 5514 35617 15312 8553 ...
##  $ 2018    : num [1:11] 117495 5799 41769 15058 10730 ...
##  $ 2019    : num [1:11] 133762 7509 47112 14750 10915 ...
##  $ 2020    : num [1:11] 109345 6641 36609 10696 9148 ...
##  $ 2021    : num [1:11] 89270 3702 31840 10748 7769 ...
str(datainflow %>% 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] 57900 2308 23238 9385 3012 ...
##  $ 2012    : num [1:11] 65911 2620 25981 11192 4447 ...
##  $ 2013    : num [1:11] 98369 36337 18120 14056 8933 ...
##  $ 2014    : num [1:11] 86024 4567 30503 14103 6358 ...
##  $ 2015    : num [1:11] 86549 4710 30254 13309 7156 ...
##  $ 2016    : num [1:11] 97764 5775 34427 14078 8211 ...
##  $ 2017    : num [1:11] 103748 5514 35617 15312 8553 ...
##  $ 2018    : num [1:11] 117495 5799 41769 15058 10730 ...
##  $ 2019    : num [1:11] 133762 7509 47112 14750 10915 ...
##  $ 2020    : num [1:11] 109345 6641 36609 10696 9148 ...
##  $ 2021    : num [1:11] 89270 3702 31840 10748 7769 ...
##  - 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 <- datainflow %>%
    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      57900. 65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh           2308.  2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Uta~ 23238. 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Bar~  9385. 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau           3012.  4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau      1426.  2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi          1868.  2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sel~  7820.  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu       1153.  1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung        7690.  6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~     0      0      0     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Mengurutkan Data

sumubah <- arrange(datainflow, `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     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3
##  2 Bengkulu       1153.  1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3
##  3 Jambi          1868.  2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3
##  4 Kep. Riau      1426.  2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3
##  5 Lampung        7690.  6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4
##  6 Sumatera Sel~  7820.  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4
##  7 Riau           3012.  4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4
##  8 Sumatera Bar~  9385. 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4
##  9 Sumatera Uta~ 23238. 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4
## 10 Aceh           2308.  2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3
## 11 Sumatera      57900. 65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menambahkan Variabel pada Tabel

sumup1 <- datainflow %>%
    mutate(`2021` = datainflow$`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      57900. 65911. 98369. 86024.  86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh           2308.  2620. 36337.  4567.   4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Uta~ 23238. 25981. 18120. 30503.  30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Bar~  9385. 11192. 14056. 14103.  13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau           3012.  4447.  8933.  6358.   7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau      1426.  2236.  3378.  2563.   3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi          1868.  2138.  3047.  5169.   4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sel~  7820.  9126.  8647. 10038.  10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu       1153.  1201.  2378.  3262.   2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung        7690.  6969.  3474.  9448.   8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~     0      0      0     13.7  1177.  1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

2. Visualisasi Data dengan ggplot

ggplot(data = datainflow, 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