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 Bali Nusra

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowbali <- read_excel(path = "~/linear algebra/outflow bali.xlsx")
outflowbali
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## # ... 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

bali1 <- select(outflowbali, '2014')
bali1
## # A tibble: 4 x 1
##   `2014`
##    <dbl>
## 1 23391.
## 2 13104.
## 3  5620.
## 4  4668.
bali2 <- select(outflowbali, '2015','2017','2018','2020')
bali2
## # A tibble: 4 x 4
##   `2015` `2017` `2018` `2020`
##    <dbl>  <dbl>  <dbl>  <dbl>
## 1 26728. 34160. 37260. 31224.
## 2 14471. 17822. 20434. 14323.
## 3  6728.  8770.  9271.  8546.
## 4  5530.  7569.  7555.  8356.

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.

bali3 <- select(outflowbali, -'2019')
bali3
## # A tibble: 4 x 11
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 31224.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 14323.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271.  8546.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  8356.
## # ... 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 :

bali4 <- outflowbali %>%
  select(tahun = '2011','2012','2015')
bali4
## # A tibble: 4 x 3
##    tahun `2012` `2015`
##    <dbl>  <dbl>  <dbl>
## 1 16424. 19421. 26728.
## 2  8912. 10782. 14471.
## 3  3819.  4379.  6728.
## 4  3693.  4260.  5530.

Mengganti Tabel Tahun

library(dplyr)
balitahun <- outflowbali %>% rename('2009' = '2011')
head(balitahun)
## # A tibble: 4 x 12
##   Keterangan      `2009` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel Dari Sebuah Variabel

bali5 <- distinct(outflowbali, `2014`)
bali5
## # A tibble: 4 x 1
##   `2014`
##    <dbl>
## 1 23391.
## 2 13104.
## 3  5620.
## 4  4668.

Dari Semua Variabel

bali6 <- distinct(outflowbali, `2014`, .keep_all = TRUE)
bali6
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

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.

bali7 <- outflowbali %>%
  filter(Keterangan <= 'Bali') %>%
  select('2017','2018')
bali7
## # A tibble: 1 x 2
##   `2017` `2018`
##    <dbl>  <dbl>
## 1 17822. 20434.
bali8 <- outflowbali %>%
  filter(Keterangan == 'Bali', Keterangan == 'Nusa Tenggara Barat') %>%
  select(-`2020`)
bali8
## # 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(outflowbali)
## tibble [4 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
##  $ 2011      : num [1:4] 16424 8912 3819 3693
##  $ 2012      : num [1:4] 19421 10782 4379 4260
##  $ 2013      : num [1:4] 29399 7248 10628 11524
##  $ 2014      : num [1:4] 23391 13104 5620 4668
##  $ 2015      : num [1:4] 26728 14471 6728 5530
##  $ 2016      : num [1:4] 31941 18140 8149 5652
##  $ 2017      : num [1:4] 34160 17822 8770 7569
##  $ 2018      : num [1:4] 37260 20434 9271 7555
##  $ 2019      : num [1:4] 38680 20654 10288 7738
##  $ 2020      : num [1:4] 31224 14323 8546 8356
##  $ 2021      : num [1:4] 15224 6531 5222 3472
str(outflowbali %>% group_by(Keterangan))
## grouped_df [4 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
##  $ 2011      : num [1:4] 16424 8912 3819 3693
##  $ 2012      : num [1:4] 19421 10782 4379 4260
##  $ 2013      : num [1:4] 29399 7248 10628 11524
##  $ 2014      : num [1:4] 23391 13104 5620 4668
##  $ 2015      : num [1:4] 26728 14471 6728 5530
##  $ 2016      : num [1:4] 31941 18140 8149 5652
##  $ 2017      : num [1:4] 34160 17822 8770 7569
##  $ 2018      : num [1:4] 37260 20434 9271 7555
##  $ 2019      : num [1:4] 38680 20654 10288 7738
##  $ 2020      : num [1:4] 31224 14323 8546 8356
##  $ 2021      : num [1:4] 15224 6531 5222 3472
##  - attr(*, "groups")= tibble [4 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Keterangan: chr [1:4] "Bali" "Bali Nusra" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
##   ..$ .rows     : list<int> [1:4] 
##   .. ..$ : int 2
##   .. ..$ : int 1
##   .. ..$ : int 3
##   .. ..$ : int 4
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan dan Mengurutkan Data

Mengelompokkan Data

baligrup <- outflowbali %>%
  group_by(Keterangan)
baligrup
## # A tibble: 4 x 12
## # Groups:   Keterangan [4]
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengurutkan Data

slwsort <- arrange(outflowbali, `2017`)
slwsort
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## 2 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 3 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 4 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Menambahkan Kolom pada Tabel

baligrup1 <- outflowbali %>%
  mutate(`2022` = outflowbali$`2021`/2)
baligrup1
## # A tibble: 4 x 13
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680.
## 2 Bali             8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654.
## 3 Nusa Tenggara ~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.
## 4 Nusa Tenggara ~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `2022` <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

Pada Tahun 2021

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

Pada Tahun 2019

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

ggplot dengan Grafik Batang

Pada Tahun 2021

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

Pada Tahun 2019

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