Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika

Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data inflow uang kartal di pulau Jawa. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.

1. Manipulasi Data dengan Library dplyr

Manipulasi data merupakan proses pengolahan data yang mana data tersebut direkayasa untuk menghilangkan kebenaran identitas dari data tersebut. Manipulasi data juga bisa digunakan dengan tujuan untuk mengubah data agar lebih mudah untuk dibaca.

Pada bahasa pemrograman R, manipulasi data dilakukan menggunakan package dplyr di RSudio. Package ini ditemukan oleh Hadley Wickham dan Roman Francois. Ada beberapa fungsi yang didapat setelah kita menginstall package dplyr, yaitu diantaranya :

Berikut cara untuk menginstall package dplyr :

install.package(dplyr)

Untuk memanggil package dplyr maka menggunakan sintaks :

library(dplyr)

Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data inflow uang kartal di pulau Jawa. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.

Data Inflow Uang Kartal di Pulau Jawa

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
datainflow <- read_excel(path = "C:/Users/User/Documents/SEMESTER 2/LINEAR ALGEBRA/pivot inflow jawa.xlsx")
datainflow 
## # A tibble: 6 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 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## # ... with 1 more variable: 2021 <dbl>
library(tidyverse)
## -- 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.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Memilih Variabel yang Ingin Ditampilkan

jawa2011 <- select(datainflow, '2011')
jawa2011
## # A tibble: 6 x 1
##    `2011`
##     <dbl>
## 1 123917.
## 2  43775.
## 3  35137.
## 4   6490.
## 5  38515.
## 6      0

Menghapus Variabel yang Tidak Ingin Digunakan

jawa2 <- select(datainflow, `2013`, `2014`, `2015`, `2019`, `2021`)
jawa2
## # A tibble: 6 x 5
##    `2013`  `2014`  `2015`  `2019`  `2021`
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 134998. 217303. 230141. 324624. 187816.
## 2  35190.  78660.  81303.  94846.  57295.
## 3  42182.  60476.  65198.  90751.  62024.
## 4   8939.  13890.  14831.  20899.   6714.
## 5  48687.  64276.  68808. 113651.  58986.
## 6      0       0       0    4477.   2798.

Sintaks diatas digunakan untuk memanggil beberapa variabel dan tidak mengikutsertakan beberapa variabel lainnya. Seperti tahun 2011, 2012, 2016, 2017, 2018, dan 2020 yang tidak termasuk dalam pemanggilan.

Apabila variabel yang ingin dihilangkan dalam pemanggilan hanya satu, maka kita dapat menggunakan fungsi select() kemudian memberikan tanda minus (-) pada variabel yang ingin dihapus. Berikut adalah contoh sintaksnya :

library(tidyverse)
jawanon2011 <- select(datainflow, -'2011')
jawanon2011
## # A tibble: 6 x 11
##   Provinsi `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5 1.88e5
## 2 Jawa Ba~ 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4 5.73e4
## 3 Jawa Te~ 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4 6.20e4
## 4 Yogyaka~ 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3 6.71e3
## 5 Jawa Ti~ 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4 5.90e4
## 6 Banten   0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3 2.80e3

Selain untuk memanggil suatu variabel, fungsi select() juga dapat digunakan untuk mengganti nama variabel.

jawa3 <- datainflow %>%
  select(tahun = `2014`, `2018`, `2019`)
jawa3
## # A tibble: 6 x 3
##     tahun  `2018`  `2019`
##     <dbl>   <dbl>   <dbl>
## 1 217303. 306911. 324624.
## 2  78660.  87243.  94846.
## 3  60476.  87829.  90751.
## 4  13890.  20574.  20899.
## 5  64276. 106433. 113651.
## 6      0    4832.   4477.

Mengganti Nama Variabel

library(dplyr)
jawa4 <- datainflow %>% rename('2010' = '2011')
head(jawa4)
## # 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 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

jawa5 <- distinct(datainflow, `2017`)
jawa5
## # A tibble: 6 x 1
##    `2017`
##     <dbl>
## 1 277609.
## 2  83220.
## 3  77031.
## 4  17483.
## 5  98380.
## 6   1495.

Untuk mengambil nilai dari semua baris pada suatu variabel, maka kita menambahkan .keep_all = TRUE

jawa6 <- distinct(datainflow, `2017`, .keep_all = TRUE)
jawa6
## # A tibble: 6 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 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## # ... with 1 more variable: 2021 <dbl>

Menyeleksi Baris pada Variabel

Untuk menyeleksi baris berdasarkan nilainya, maka digunakan fungsi filter()

jawa7 <- datainflow %>%
  filter(Provinsi <= 'Jawa') %>%
    select(`2015`,`2016`)
jawa7
## # A tibble: 2 x 2
##    `2015`  `2016`
##     <dbl>   <dbl>
## 1 230141. 261607.
## 2      0       0
jawa8 <- datainflow %>%
  filter(Provinsi == 'Jawa', Provinsi == 'Jawa Barat') %>%
    select( -`2016`)
jawa8
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(datainflow)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 123917 43775 35137 6490 38515 ...
##  $ 2012    : num [1:6] 160482 60629 43298 9173 47383 ...
##  $ 2013    : num [1:6] 134998 35190 42182 8939 48687 ...
##  $ 2014    : num [1:6] 217303 78660 60476 13890 64276 ...
##  $ 2015    : num [1:6] 230141 81303 65198 14831 68808 ...
##  $ 2016    : num [1:6] 261607 88036 72782 17350 83439 ...
##  $ 2017    : num [1:6] 277609 83220 77031 17483 98380 ...
##  $ 2018    : num [1:6] 306911 87243 87829 20574 106433 ...
##  $ 2019    : num [1:6] 324624 94846 90751 20899 113651 ...
##  $ 2020    : num [1:6] 259444 76883 84970 7348 86848 ...
##  $ 2021    : num [1:6] 187816 57295 62024 6714 58986 ...
str(datainflow %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 123917 43775 35137 6490 38515 ...
##  $ 2012    : num [1:6] 160482 60629 43298 9173 47383 ...
##  $ 2013    : num [1:6] 134998 35190 42182 8939 48687 ...
##  $ 2014    : num [1:6] 217303 78660 60476 13890 64276 ...
##  $ 2015    : num [1:6] 230141 81303 65198 14831 68808 ...
##  $ 2016    : num [1:6] 261607 88036 72782 17350 83439 ...
##  $ 2017    : num [1:6] 277609 83220 77031 17483 98380 ...
##  $ 2018    : num [1:6] 306911 87243 87829 20574 106433 ...
##  $ 2019    : num [1:6] 324624 94846 90751 20899 113651 ...
##  $ 2020    : num [1:6] 259444 76883 84970 7348 86848 ...
##  $ 2021    : num [1:6] 187816 57295 62024 6714 58986 ...
##  - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: 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 Data

jawaup <- datainflow %>%
    group_by(Provinsi)
jawaup
## # A tibble: 6 x 12
## # Groups:   Provinsi [6]
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## # ... with 1 more variable: 2021 <dbl>

Mengurutkan Data

jawaubah <- arrange(datainflow, `2013`)
jawaubah
## # A tibble: 6 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 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## 2 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 3 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 4 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Variabel pada Tabel

jawaup1 <- datainflow %>%
    mutate(`2021` = datainflow$`2020`/2)
jawaup1
## # A tibble: 6 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 Jawa     1.24e5 1.60e5 1.35e5 2.17e5 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5 2.59e5
## 2 Jawa Ba~ 4.38e4 6.06e4 3.52e4 7.87e4 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4 7.69e4
## 3 Jawa Te~ 3.51e4 4.33e4 4.22e4 6.05e4 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4 8.50e4
## 4 Yogyaka~ 6.49e3 9.17e3 8.94e3 1.39e4 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4 7.35e3
## 5 Jawa Ti~ 3.85e4 4.74e4 4.87e4 6.43e4 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5 8.68e4
## 6 Banten   0      0      0      0      0      0      1.49e3 4.83e3 4.48e3 3.40e3
## # ... with 1 more variable: 2021 <dbl>

2. Visualisasi Data dengan ggplot

ggplot(data = datainflow, mapping = aes(Provinsi, `2011`, color = Provinsi)) +
  geom_point()


Sumber :

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

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

https://dplyr.tidyverse.org/

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00