Dosen Pengampu : Prof. Dr. Suhartono, M.Kom

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Jurusan : Teknik Informatika

Fakultas : Sains dan Teknologi

Manipulasi Data dengan Library dplyr

Dalam melakukan manipulasi data di R dapat menggunakan package dplyr. Package ini berfungsi untuk memudahkan manipulasi data seperti mengambil sampel secara acak dari tabel, mengurutkan data, menyaring data, atau bisa juga untuk mengelompokkan data.

Package dplyr ini digunakan ketika melakukan manipulasi data dengan pemrosesan yang cepat sehingga meminimalisir waktu, kodenya juga simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi.

Data Outflow di Pulau Jawa

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowjawa <- read_excel(path = "~/linear algebra/outflow jawa baru.xlsx")
outflowjawa
## # A tibble: 6 x 12
##   Keterangan  `2011`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2019`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.72e5
## 2 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 6.17e4
## 3 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.24e4
## 4 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 2.14e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 1.06e5
## 6 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.10e4
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.1.3
## -- 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
## Warning: package 'ggplot2' was built under R version 4.1.3
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'readr' was built under R version 4.1.3
## Warning: package 'purrr' was built under R version 4.1.3
## Warning: package 'dplyr' was built under R version 4.1.3
## Warning: package 'forcats' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Membuang Beberapa Variabel yang Tidak Ingin Digunakan

jawa1 <- select(outflowjawa, '2014')
jawa1
## # A tibble: 6 x 1
##    `2014`
##     <dbl>
## 1 147069.
## 2  40857.
## 3  39110.
## 4  13171.
## 5  53931.
## 6      0
jawa2 <- select(outflowjawa, '2015','2017','2018','2020')
jawa2
## # A tibble: 6 x 4
##    `2015`  `2017`  `2018`  `2020`
##     <dbl>   <dbl>   <dbl>   <dbl>
## 1 171568. 228905. 253125. 251363.
## 2  47063.  53825.  61358.  57235.
## 3  46840.  62761.  69368.  72342.
## 4  14080.  16810.  20357.  16619.
## 5  63585.  93396.  97995.  93374.
## 6      0    2113.   4047.  11793.

Memilih Beberapa Variabel yang Ingin Digunakan

Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.

jawa3 <- select(outflowjawa, -'2019')
jawa3
## # A tibble: 6 x 11
##   Keterangan  `2011`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2020`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.51e5
## 2 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 5.72e4
## 3 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.23e4
## 4 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 1.66e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 9.34e4
## 6 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.18e4
## # ... with 1 more variable: `2021` <dbl>

Sintaksnya ini menggunakan fungsi select, dan select ini bukan hanya untuk memilih kolom dalam jumlah banyak, melainkan juga bisa untuk mengganti nama kolomnya. Perhatikan sintaks yang ada dibawah ini :

jawa4 <- outflowjawa %>%
  select(tahun = '2011','2012','2015')
jawa4
## # A tibble: 6 x 3
##    tahun  `2012`  `2015`
##    <dbl>   <dbl>   <dbl>
## 1 83511. 111363. 171568.
## 2 20782.  28895.  47063.
## 3 19975.  28493.  46840.
## 4  7538.   9486.  14080.
## 5 35217.  44489.  63585.
## 6     0       0       0

Mengganti Tabel Tahun

library(dplyr)
jawatahun <- outflowjawa %>% rename('2009' = '2011')
head(jawatahun)
## # A tibble: 6 x 12
##   Keterangan  `2009`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2019`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.72e5
## 2 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 6.17e4
## 3 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.24e4
## 4 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 2.14e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 1.06e5
## 6 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.10e4
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel Dari Sebuah Variabel

jawa5 <- distinct(outflowjawa, '2014')
jawa5
## # A tibble: 1 x 1
##   `"2014"`
##   <chr>   
## 1 2014

Dari Semua Variabel

jawa6 <- distinct(outflowjawa, '2014', .keep_all = TRUE)
jawa6
## # A tibble: 1 x 13
##   Keterangan `2011`  `2012` `2013`  `2014`  `2015`  `2016`  `2017` `2018` `2019`
##   <chr>       <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>
## 1 Jawa       83511. 111363. 98969. 147069. 171568. 190568. 228905. 2.53e5 2.72e5
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `"2014"` <chr>

Menyeleksi Baris Tabel

Baris tabel diseleksi dengan menggunakan fungsi filter(). dalam fungsi ini terdapat berbagai operator, seperti <, <=, >, >, ==, dan %in%. Argumen dari fungsi ini juga bisa lebih dari satu, dan sintaksnya menggunakan operator boolean.

jawa7 <- outflowjawa %>%
  filter(Keterangan <= 'Jawa') %>%
  select('2017','2018')
jawa7
## # A tibble: 2 x 2
##    `2017`  `2018`
##     <dbl>   <dbl>
## 1 228905. 253125.
## 2   2113.   4047.
jawa8 <- outflowjawa %>%
  filter(Keterangan == 'Jawa', Keterangan == 'Jawa Timur') %>%
  select(-`2020`)
jawa8
## # A tibble: 0 x 11
## # ... with 11 variables: Keterangan <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>,
## #   2021 <dbl>
str(outflowjawa)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Keterangan: 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(outflowjawa %>% group_by(Keterangan))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Keterangan: 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)
##   ..$ Keterangan: 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 dan Mengurutkan Data

Mengelompokkan Data

jawagrup <- outflowjawa %>%
  group_by(Keterangan)
jawagrup
## # A tibble: 6 x 12
## # Groups:   Keterangan [6]
##   Keterangan  `2011`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2019`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.72e5
## 2 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 6.17e4
## 3 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.24e4
## 4 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 2.14e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 1.06e5
## 6 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.10e4
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengurutkan Data

jawasort <- arrange(outflowjawa, `2017`)
jawasort
## # A tibble: 6 x 12
##   Keterangan  `2011`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2019`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.10e4
## 2 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 2.14e4
## 3 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 6.17e4
## 4 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.24e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 1.06e5
## 6 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.72e5
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Menambahkan Kolom pada Tabel

jawagrup1 <- outflowjawa %>%
  mutate(`2022` = outflowjawa$`2021`/2)
jawagrup1
## # A tibble: 6 x 13
##   Keterangan  `2011`  `2012` `2013`  `2014`  `2015`  `2016` `2017` `2018` `2019`
##   <chr>        <dbl>   <dbl>  <dbl>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa        83511. 111363. 98969. 147069. 171568. 190568. 2.29e5 2.53e5 2.72e5
## 2 Jawa Barat  20782.  28895. 23067.  40857.  47063.  49405. 5.38e4 6.14e4 6.17e4
## 3 Jawa Tengah 19975.  28493. 29529.  39110.  46840.  53659. 6.28e4 6.94e4 7.24e4
## 4 Yogyakarta   7538.   9486.  9708.  13171.  14080.  13013. 1.68e4 2.04e4 2.14e4
## 5 Jawa Timur  35217.  44489. 36665.  53931.  63585.  74491. 9.34e4 9.80e4 1.06e5
## 6 Banten          0       0      0       0       0       0  2.11e3 4.05e3 1.10e4
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `2022` <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

Pada Tahun 2021

ggplot(data = outflowjawa, mapping = aes(x = Keterangan, y = `2021`)) +
  geom_point() 

Pada Tahun 2019

ggplot(data = outflowjawa, mapping = aes(x = Keterangan, y = `2019`)) + geom_point()

ggplot dengan Grafik Batang

Pada Tahun 2021

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

Pada Tahun 2019

ggplot(data = outflowjawa, mapping = aes(x = Keterangan, y = `2019`))+geom_bar(stat = "identity")

Referensi :

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

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

https://rpubs.com/aephidayatuloh/manipulasi-data