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 Sulawesi

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowslw <- read_excel(path = "~/linear algebra/outflow sulawesi.xlsx")
outflowslw
## # A tibble: 5 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## # ... 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

slw1 <- select(outflowslw, '2014')
slw1
## # A tibble: 5 x 1
##   `2014`
##    <dbl>
## 1  7207.
## 2  5696.
## 3 15645.
## 4  3537.
## 5     0
slw2 <- select(outflowslw, '2015','2017','2018','2020')
slw2
## # A tibble: 5 x 4
##   `2015` `2017` `2018` `2020`
##    <dbl>  <dbl>  <dbl>  <dbl>
## 1  7202.  8421.  7605.  7437.
## 2  5310.  5226.  5578.  4674.
## 3 16236. 15159. 16779. 20503.
## 4  4716.  5293.  5224.  5129.
## 5   647.  2504.  3350.  2921.

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.

slw3 <- select(outflowslw, -'2019')
slw3
## # A tibble: 5 x 11
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7437.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  4674.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 20503.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5129.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2921.
## # ... 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 :

slw4 <- outflowslw %>%
  select(tahun = '2011','2012','2015')
slw4
## # A tibble: 5 x 3
##   tahun `2012` `2015`
##   <dbl>  <dbl>  <dbl>
## 1 6606.  6375.  7202.
## 2 4017.  4458.  5310.
## 3 8967. 11873. 16236.
## 4 2889.  2950.  4716.
## 5    0      0    647.

Mengganti Tabel Tahun

library(dplyr)
slwtahun <- outflowslw %>% rename('2009' = '2011')
head(slwtahun)
## # A tibble: 5 x 12
##   Keterangan      `2009` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel Dari Sebuah Variabel

slw5 <- distinct(outflowslw, `2014`)
slw5
## # A tibble: 5 x 1
##   `2014`
##    <dbl>
## 1  7207.
## 2  5696.
## 3 15645.
## 4  3537.
## 5     0

Dari Semua Variabel

slw6 <- distinct(outflowslw, `2014`, .keep_all = TRUE)
slw6
## # A tibble: 5 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## # ... 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.

slw7 <- outflowslw %>%
  filter(Keterangan <= 'Sulawesi Utara') %>%
  select('2017','2018')
slw7
## # A tibble: 5 x 2
##   `2017` `2018`
##    <dbl>  <dbl>
## 1  8421.  7605.
## 2  5226.  5578.
## 3 15159. 16779.
## 4  5293.  5224.
## 5  2504.  3350.
slw8 <- outflowslw %>%
  filter(Keterangan == 'Sulawesi Utara', Keterangan == 'Sulawesi Tengah') %>%
  select(-`2020`)
slw8
## # 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(outflowslw)
## tibble [5 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:5] "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" "Sulawesi Tenggara" ...
##  $ 2011      : num [1:5] 6606 4017 8967 2889 0
##  $ 2012      : num [1:5] 6375 4458 11873 2950 0
##  $ 2013      : num [1:5] 22740 4544 11485 4239 0
##  $ 2014      : num [1:5] 7207 5696 15645 3537 0
##  $ 2015      : num [1:5] 7202 5310 16236 4716 647
##  $ 2016      : num [1:5] 7707 4962 15494 4488 1514
##  $ 2017      : num [1:5] 8421 5226 15159 5293 2504
##  $ 2018      : num [1:5] 7605 5578 16779 5224 3350
##  $ 2019      : num [1:5] 7367 5531 18089 5056 2749
##  $ 2020      : num [1:5] 7437 4674 20503 5129 2921
##  $ 2021      : num [1:5] 3050 2763 12017 2507 2079
str(outflowslw %>% group_by(Keterangan))
## grouped_df [5 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:5] "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" "Sulawesi Tenggara" ...
##  $ 2011      : num [1:5] 6606 4017 8967 2889 0
##  $ 2012      : num [1:5] 6375 4458 11873 2950 0
##  $ 2013      : num [1:5] 22740 4544 11485 4239 0
##  $ 2014      : num [1:5] 7207 5696 15645 3537 0
##  $ 2015      : num [1:5] 7202 5310 16236 4716 647
##  $ 2016      : num [1:5] 7707 4962 15494 4488 1514
##  $ 2017      : num [1:5] 8421 5226 15159 5293 2504
##  $ 2018      : num [1:5] 7605 5578 16779 5224 3350
##  $ 2019      : num [1:5] 7367 5531 18089 5056 2749
##  $ 2020      : num [1:5] 7437 4674 20503 5129 2921
##  $ 2021      : num [1:5] 3050 2763 12017 2507 2079
##  - attr(*, "groups")= tibble [5 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Keterangan: chr [1:5] "Sulawesi Barat" "Sulawesi Selatan" "Sulawesi Tengah" "Sulawesi Tenggara" ...
##   ..$ .rows     : list<int> [1:5] 
##   .. ..$ : int 5
##   .. ..$ : int 3
##   .. ..$ : int 2
##   .. ..$ : int 4
##   .. ..$ : int 1
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan dan Mengurutkan Data

Mengelompokkan Data

slwgrup <- outflowslw %>%
  group_by(Keterangan)
slwgrup
## # A tibble: 5 x 12
## # Groups:   Keterangan [5]
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Mengurutkan Data

slwsort <- arrange(outflowslw, `2017`)
slwsort
## # A tibble: 5 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 4 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 5 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Menambahkan Kolom pada Tabel

slwgrup1 <- outflowslw %>%
  mutate(`2022` = outflowslw$`2021`/2)
slwgrup1
## # A tibble: 5 x 13
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi Utara   6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
## 2 Sulawesi Tengah  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
## 3 Sulawesi Selat~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
## 5 Sulawesi Barat      0      0      0      0    647.  1514.  2504.  3350.  2749.
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `2022` <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

Pada Tahun 2021

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

Pada Tahun 2019

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

ggplot dengan Grafik Batang

Pada Tahun 2021

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

Pada Tahun 2019

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