Cara Memanipulasi data dengan librari dplyr

Saat melakukan manipulasi data pada 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 dan lain lain.

Data outflow uang kartal Pulau Sumatera

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
dplyroutflow1 <- read_excel(path = "D:/Matkul Sem2/Linear Algebra/pivot outflow sumatera.xlsx")
dplyroutflow1
## # A tibble: 8 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 7 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 8 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.1.2
## -- 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.8
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## Warning: package 'tidyr' was built under R version 4.1.2
## Warning: package 'readr' was built under R version 4.1.2
## Warning: package 'purrr' was built under R version 4.1.2
## Warning: package 'dplyr' was built under R version 4.1.2
## Warning: package 'forcats' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Menghapus Beberapa Variabel yang tidak diperlukan

Sumatera2015 <- select(dplyroutflow1, '2015')
Sumatera2015
## # A tibble: 8 x 1
##    `2015`
##     <dbl>
## 1 109186.
## 2  27877.
## 3   7471.
## 4   8325.
## 5  13484.
## 6   4852.
## 7   9946.
## 8   2005.
Sumateramin2 <- select(dplyroutflow1, '2011', '2012', '2013', '2014', '2016', '2017', '2018', '2020', '2021')
Sumateramin2
## # A tibble: 8 x 9
##   `2011` `2012`  `2013`  `2014`  `2016`  `2017`  `2018`  `2020` `2021`
##    <dbl>  <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>  <dbl>
## 1 80092. 85235. 103288. 102338. 121992. 133606. 135676. 140589. 86627.
## 2 22176. 22495.  19235.  26391.  31959.  35243.  36908.  39758. 23453.
## 3  5300.  6434.   6511.   7060.   9198.  10754.   8447.   8763.  5941.
## 4  5217.  5013.   6302.   8361.   7774.   8434.   8459.   8950.  6046.
## 5 14524. 15600.  12693.  13372.  15756.  16981.  17931.  18309. 11436.
## 6  2561.  2959.   6490.   4583.   5163.   5447.   5495.   6564.  4681.
## 7  5724.  6376.   4571.   8339.  10436.  13359.  13725.  13873.  8050.
## 8     0      0       0     322.   2684.   2750.   2738.   3899.  3493.

Memilih Variebel yang akan digunakan

sumateramin2015 <- select(dplyroutflow1, -'2019')
sumateramin2015
## # A tibble: 8 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.41e5 86627.
## 2 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 3.98e4 23453.
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 8.76e3  5941.
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 8.95e3  6046.
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.83e4 11436.
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.56e3  4681.
## 7 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.39e4  8050.
## 8 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 3.90e3  3493.

Sintaks ini menggunakan fungsi select, dan select ini tidak hanya untuk memilih kolom dalam jumlah banyak, melainkan juga bisa untuk mengganti nama kolomnya. misalnya :

Sumateramin1 <- dplyroutflow1 %>%
  select(tahun = `2017`, `2018`, `2019`)
Sumateramin1
## # A tibble: 8 x 3
##     tahun  `2018`  `2019`
##     <dbl>   <dbl>   <dbl>
## 1 133606. 135676. 153484.
## 2  35243.  36908.  44051.
## 3  10754.   8447.   9465.
## 4   8434.   8459.   9204.
## 5  16981.  17931.  19121.
## 6   5447.   5495.   6842.
## 7  13359.  13725.  15626.
## 8   2750.   2738.   4167.

Mengganti tabel pada tahun

library(dplyr)
Sumateratahun2 <- dplyroutflow1 %>% rename('2010' = '2011')
head(Sumateratahun2)
## # 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 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## # ... with 1 more variable: 2021 <dbl>

Menggambil Nilai yang tidak Duplikasi dari Variabel yang ada

Dari Sebuah Variabel

Sumatera4 <- distinct(dplyroutflow1, `2016`)
Sumatera4
## # A tibble: 8 x 1
##    `2016`
##     <dbl>
## 1 121992.
## 2  31959.
## 3   9198.
## 4   7774.
## 5  15756.
## 6   5163.
## 7  10436.
## 8   2684.

Dari Semua Variabel

Sumatera5 <- distinct(dplyroutflow1, `2016`, .keep_all = TRUE)
Sumatera5
## # A tibble: 8 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 7 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 8 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>

Menyeleksi Baris pada Tabel

Baris tabel diseleksi dengan menggunakan fungsi filter().

Sumatera6 <- dplyroutflow1 %>%
  filter(Provinsi <= 'Sulawesi Barat') %>%
    select(`2018`,`2019`)
Sumatera6
## # A tibble: 4 x 2
##   `2018` `2019`
##    <dbl>  <dbl>
## 1  8459.  9204.
## 2  5495.  6842.
## 3 13725. 15626.
## 4  2738.  4167.
Sumatera7 <- dplyroutflow1 %>%
  filter(Provinsi == 'Jambi', Provinsi == 'Bengkulu') %>%
    select( -`2020`)
Sumatera7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>,
## #   2021 <dbl>
str(dplyroutflow1)
## tibble [8 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:8] "Sumatera" "Sumatera Utara" "Sumatera Barat" "Jambi" ...
##  $ 2011    : num [1:8] 80092 22176 5300 5217 14524 ...
##  $ 2012    : num [1:8] 85235 22495 6434 5013 15600 ...
##  $ 2013    : num [1:8] 103288 19235 6511 6302 12693 ...
##  $ 2014    : num [1:8] 102338 26391 7060 8361 13372 ...
##  $ 2015    : num [1:8] 109186 27877 7471 8325 13484 ...
##  $ 2016    : num [1:8] 121992 31959 9198 7774 15756 ...
##  $ 2017    : num [1:8] 133606 35243 10754 8434 16981 ...
##  $ 2018    : num [1:8] 135676 36908 8447 8459 17931 ...
##  $ 2019    : num [1:8] 153484 44051 9465 9204 19121 ...
##  $ 2020    : num [1:8] 140589 39758 8763 8950 18309 ...
##  $ 2021    : num [1:8] 86627 23453 5941 6046 11436 ...
str(dplyroutflow1 %>% group_by(Provinsi))
## grouped_df [8 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:8] "Sumatera" "Sumatera Utara" "Sumatera Barat" "Jambi" ...
##  $ 2011    : num [1:8] 80092 22176 5300 5217 14524 ...
##  $ 2012    : num [1:8] 85235 22495 6434 5013 15600 ...
##  $ 2013    : num [1:8] 103288 19235 6511 6302 12693 ...
##  $ 2014    : num [1:8] 102338 26391 7060 8361 13372 ...
##  $ 2015    : num [1:8] 109186 27877 7471 8325 13484 ...
##  $ 2016    : num [1:8] 121992 31959 9198 7774 15756 ...
##  $ 2017    : num [1:8] 133606 35243 10754 8434 16981 ...
##  $ 2018    : num [1:8] 135676 36908 8447 8459 17931 ...
##  $ 2019    : num [1:8] 153484 44051 9465 9204 19121 ...
##  $ 2020    : num [1:8] 140589 39758 8763 8950 18309 ...
##  $ 2021    : num [1:8] 86627 23453 5941 6046 11436 ...
##  - attr(*, "groups")= tibble [8 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:8] "Bengkulu" "Jambi" "Kep. Bangka Belitung" "Lampung" ...
##   ..$ .rows   : list<int> [1:8] 
##   .. ..$ : int 6
##   .. ..$ : int 4
##   .. ..$ : int 8
##   .. ..$ : int 7
##   .. ..$ : int 1
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 2
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Pengelompokan dan Pengurutan Data

Pengelompokan Data

Sumaterakel <- dplyroutflow1 %>%
    group_by(Provinsi)
Sumaterakel
## # A tibble: 8 x 12
## # Groups:   Provinsi [8]
##   Provinsi `2011` `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 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 7 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 8 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>

Pengurutan Data

Sumateraubah <- arrange(dplyroutflow1, `2012`)
Sumateraubah
## # A tibble: 8 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 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## 2 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 3 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 4 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 5 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 6 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 7 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 8 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolon pada Tabel

Sumaterakel2 <- dplyroutflow1 %>%
    mutate(`2021` = dplyroutflow1$`2020`/2)
Sumaterakel2
## # A tibble: 8 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 3 Sumater~  5300.  6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 4 Jambi     5217.  5013. 6.30e3 8.36e3 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 5 Sumater~ 14524. 15600. 1.27e4 1.34e4 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 6 Bengkulu  2561.  2959. 6.49e3 4.58e3 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 7 Lampung   5724.  6376. 4.57e3 8.34e3 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 8 Kep. Ba~     0      0  0      3.22e2 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

ggplot(data = dplyroutflow1, mapping = aes(x = Provinsi, y = `2011`)) +
  geom_point()

ggplot(data = dplyroutflow1, mapping = aes(x = Provinsi, y = `2011`)) +
  geom_point()

Refrensi

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

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