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 inflow uang kartal Pulau Sumatera

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
dplyrinflow1 <- read_excel(path = "D:/Matkul Sem2/Linear Algebra/pivot inflow sumatera.xlsx")
dplyrinflow1
## # 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 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 3 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 4 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 7 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 8 Kep. Ba~     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... 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(dplyrinflow1, '2015')
Sumatera2015
## # A tibble: 8 x 1
##   `2015`
##    <dbl>
## 1 86549.
## 2 30254.
## 3 13309.
## 4  4978.
## 5 10797.
## 6  2791.
## 7  8160.
## 8  1177.
Sumateramin2 <- select(dplyrinflow1, '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 57900. 65911. 98369. 86024.  97764. 103748. 117495. 109345. 89270.
## 2 23238. 25981. 18120. 30503.  34427.  35617.  41769.  36609. 31840.
## 3  9385. 11192. 14056. 14103.  14078.  15312.  15058.  10696. 10748.
## 4  1868.  2138.  3047.  5169.   4398.   4404.   5657.   5628.  4980.
## 5  7820.  9126.  8647. 10038.  12752.  13075.  14267.  11756.  9106.
## 6  1153.  1201.  2378.  3262.   2889.   3620.   4150.   4971.  4160.
## 7  7690.  6969.  3474.  9448.   9373.  12078.  13415.  15158. 10697.
## 8     0      0      0     13.7  1544.   1164.   1517.   2562.  1259.

Memilih Variebel yang akan digunakan

sumateramin2015 <- select(dplyrinflow1, -'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 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.09e5 89270.
## 2 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 3.66e4 31840.
## 3 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.07e4 10748.
## 4 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 5.63e3  4980.
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.18e4  9106.
## 6 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 4.97e3  4160.
## 7 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.52e4 10697.
## 8 Kep. Ba~     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 2.56e3  1259.

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 <- dplyrinflow1 %>%
  select(tahun = `2017`, `2018`, `2019`)
Sumateramin1
## # A tibble: 8 x 3
##     tahun  `2018`  `2019`
##     <dbl>   <dbl>   <dbl>
## 1 103748. 117495. 133762.
## 2  35617.  41769.  47112.
## 3  15312.  15058.  14750.
## 4   4404.   5657.   6486.
## 5  13075.  14267.  14812.
## 6   3620.   4150.   5789.
## 7  12078.  13415.  17046.
## 8   1164.   1517.   3265.

Mengganti tabel pada tahun

library(dplyr)
Sumateratahun2 <- dplyrinflow1 %>% 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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Sumater~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 3 Sumater~  9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 4 Jambi     1868.  2138.  3047.  5169.  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 5 Sumater~  7820.  9126.  8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Bengkulu  1153.  1201.  2378.  3262.  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## # ... with 1 more variable: 2021 <dbl>

Menggambil Nilai yang tidak Duplikasi dari Variabel yang ada

Dari Sebuah Variabel

Sumatera4 <- distinct(dplyrinflow1, `2016`)
Sumatera4
## # A tibble: 8 x 1
##   `2016`
##    <dbl>
## 1 97764.
## 2 34427.
## 3 14078.
## 4  4398.
## 5 12752.
## 6  2889.
## 7  9373.
## 8  1544.

Dari Semua Variabel

Sumatera5 <- distinct(dplyrinflow1, `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 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 3 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 4 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 7 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 8 Kep. Ba~     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... with 1 more variable: 2021 <dbl>

Menyeleksi Baris pada Tabel

Baris tabel diseleksi dengan menggunakan fungsi filter().

Sumatera6 <- dplyrinflow1 %>%
  filter(Provinsi <= 'Sulawesi Barat') %>%
    select(`2018`,`2019`)
Sumatera6
## # A tibble: 4 x 2
##   `2018` `2019`
##    <dbl>  <dbl>
## 1  5657.  6486.
## 2  4150.  5789.
## 3 13415. 17046.
## 4  1517.  3265.
Sumatera7 <- dplyrinflow1 %>%
  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(dplyrinflow1)
## tibble [8 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:8] "Sumatera" "Sumatera Utara" "Sumatera Barat" "Jambi" ...
##  $ 2011    : num [1:8] 57900 23238 9385 1868 7820 ...
##  $ 2012    : num [1:8] 65911 25981 11192 2138 9126 ...
##  $ 2013    : num [1:8] 98369 18120 14056 3047 8647 ...
##  $ 2014    : num [1:8] 86024 30503 14103 5169 10038 ...
##  $ 2015    : num [1:8] 86549 30254 13309 4978 10797 ...
##  $ 2016    : num [1:8] 97764 34427 14078 4398 12752 ...
##  $ 2017    : num [1:8] 103748 35617 15312 4404 13075 ...
##  $ 2018    : num [1:8] 117495 41769 15058 5657 14267 ...
##  $ 2019    : num [1:8] 133762 47112 14750 6486 14812 ...
##  $ 2020    : num [1:8] 109345 36609 10696 5628 11756 ...
##  $ 2021    : num [1:8] 89270 31840 10748 4980 9106 ...
str(dplyrinflow1 %>% 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] 57900 23238 9385 1868 7820 ...
##  $ 2012    : num [1:8] 65911 25981 11192 2138 9126 ...
##  $ 2013    : num [1:8] 98369 18120 14056 3047 8647 ...
##  $ 2014    : num [1:8] 86024 30503 14103 5169 10038 ...
##  $ 2015    : num [1:8] 86549 30254 13309 4978 10797 ...
##  $ 2016    : num [1:8] 97764 34427 14078 4398 12752 ...
##  $ 2017    : num [1:8] 103748 35617 15312 4404 13075 ...
##  $ 2018    : num [1:8] 117495 41769 15058 5657 14267 ...
##  $ 2019    : num [1:8] 133762 47112 14750 6486 14812 ...
##  $ 2020    : num [1:8] 109345 36609 10696 5628 11756 ...
##  $ 2021    : num [1:8] 89270 31840 10748 4980 9106 ...
##  - 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 <- dplyrinflow1 %>%
    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 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 3 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 4 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 7 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 8 Kep. Ba~     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... with 1 more variable: 2021 <dbl>

Pengurutan Data

Sumateraubah <- arrange(dplyrinflow1, `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  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## 2 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 3 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 4 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 7 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 8 Sumatera 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolon pada Tabel

Sumaterakel2 <- dplyrinflow1 %>%
    mutate(`2021` = dplyrinflow1$`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 57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Sumater~ 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 3 Sumater~  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 4 Jambi     1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 5 Sumater~  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 6 Bengkulu  1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 7 Lampung   7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 8 Kep. Ba~     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... with 1 more variable: 2021 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

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

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