Dosen Pengempu : Prof. Dr. Suhartono, M.Kom

UIN Maulana Malik Ibrahim Malang - Teknik Informatika

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. Cara menginstall package dplyr yaitu dengan :

install.package(dplyr)

Dan sintaks untuk memanggil dplyr yaitu dengan :

library(dplyr)

Data Inflow di Pulau Sulawesi

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
inflowsul <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/InflowSulawesi.xlsx") 
inflowsul
## # 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 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 2 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 3 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 6 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## # ... 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.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## Warning: package 'dplyr' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Mambuang Beberapa Variabel yang Tidak Ingin Digunakan

sul1 <- select(inflowsul, `2021`)
sul1
## # A tibble: 6 x 1
##   `2021`
##    <dbl>
## 1  5798 
## 2  4671.
## 3  2453.
## 4 18335.
## 5  3270.
## 6   265.
sul2 <- select(inflowsul, `2020`, `2018`, `2016`, `2014`, `2012`)
sul2
## # A tibble: 6 x 5
##   `2020` `2018` `2016` `2014` `2012`
##    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1  6921   7522   7002   6402   4637 
## 2  6324.  7781.  7266.  7374.  6635.
## 3  3052.  3701.  2665.  3000.  1885.
## 4 21551. 21894. 21043. 19384. 13702.
## 5  3353.  3632.  3491.  2256.   964.
## 6   329.   606.   536.     0      0

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.

sul3 <- select(inflowsul, -`2014`)
sul3
## # A tibble: 6 x 11
##   Provinsi `2011` `2012` `2013` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi  3697   4637   9405  6.18e3  7002   6603   7522   8306   6921   5798 
## 2 Sulawes~  5671.  6635. 21646. 6.29e3  7266.  7044.  7781.  7809.  6324.  4671.
## 3 Sulawes~  1563.  1885.  1520. 2.59e3  2665.  2806.  3701.  4042.  3052.  2453.
## 4 Sulawes~ 10593. 13702. 17770. 1.96e4 21043. 18803. 21894. 24749. 21551. 18335.
## 5 Sulawes~   659.   964.  6093. 2.38e3  3491.  3618.  3632.  4390.  3353.  3270.
## 6 Sulawes~     0      0      0  4.92e1   536.   746.   606.   542.   329.   265.

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 :

sul4 <- inflowsul %>%
  select(tahun = `2014`, `2017`, `2018`)
sul4 
## # A tibble: 6 x 3
##    tahun `2017` `2018`
##    <dbl>  <dbl>  <dbl>
## 1  6402   6603   7522 
## 2  7374.  7044.  7781.
## 3  3000.  2806.  3701.
## 4 19384. 18803. 21894.
## 5  2256.  3618.  3632.
## 6     0    746.   606.

Mengganti Tabel Tahun

library(dplyr)
sultahun <- inflowsul %>% rename('2010' = '2011')
head(sultahun)
## # 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 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 2 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 3 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 6 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

Dari Sebuah Variabel
sul4 <- distinct(inflowsul, `2018`)
sul4
## # A tibble: 6 x 1
##   `2018`
##    <dbl>
## 1  7522 
## 2  7781.
## 3  3701.
## 4 21894.
## 5  3632.
## 6   606.
Dari Semua Variabel
sul5 <- distinct(inflowsul, `2020`, .keep_all = TRUE)
sul5
## # 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 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 2 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 3 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 6 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## # ... with 1 more variable: 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.

sul6 <- inflowsul %>%
  filter(Provinsi <= 'Sulawesi') %>%
    select(`2016`,`2017`)
sul6
## # A tibble: 1 x 2
##   `2016` `2017`
##    <dbl>  <dbl>
## 1   7002   6603
sul7 <- inflowsul %>%
  filter(Provinsi == 'Sulawesi', Provinsi == 'Sulawesi Tenggara') %>%
    select( -`2018`)
sul7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(inflowsul)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
##  $ 2011    : num [1:6] 3697 5671 1563 10593 659 ...
##  $ 2012    : num [1:6] 4637 6635 1885 13702 964 ...
##  $ 2013    : num [1:6] 9405 21646 1520 17770 6093 ...
##  $ 2014    : num [1:6] 6402 7374 3000 19384 2256 ...
##  $ 2015    : num [1:6] 6179 6286 2593 19583 2385 ...
##  $ 2016    : num [1:6] 7002 7266 2665 21043 3491 ...
##  $ 2017    : num [1:6] 6603 7044 2806 18803 3618 ...
##  $ 2018    : num [1:6] 7522 7781 3701 21894 3632 ...
##  $ 2019    : num [1:6] 8306 7809 4042 24749 4390 ...
##  $ 2020    : num [1:6] 6921 6324 3052 21551 3353 ...
##  $ 2021    : num [1:6] 5798 4671 2453 18335 3270 ...
str(inflowsul %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
##  $ 2011    : num [1:6] 3697 5671 1563 10593 659 ...
##  $ 2012    : num [1:6] 4637 6635 1885 13702 964 ...
##  $ 2013    : num [1:6] 9405 21646 1520 17770 6093 ...
##  $ 2014    : num [1:6] 6402 7374 3000 19384 2256 ...
##  $ 2015    : num [1:6] 6179 6286 2593 19583 2385 ...
##  $ 2016    : num [1:6] 7002 7266 2665 21043 3491 ...
##  $ 2017    : num [1:6] 6603 7044 2806 18803 3618 ...
##  $ 2018    : num [1:6] 7522 7781 3701 21894 3632 ...
##  $ 2019    : num [1:6] 8306 7809 4042 24749 4390 ...
##  $ 2020    : num [1:6] 6921 6324 3052 21551 3353 ...
##  $ 2021    : num [1:6] 5798 4671 2453 18335 3270 ...
##  - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Barat" "Sulawesi Selatan" "Sulawesi Tengah" ...
##   ..$ .rows   : list<int> [1:6] 
##   .. ..$ : int 1
##   .. ..$ : int 6
##   .. ..$ : int 4
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 2
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan dan Mengurutkan Data

Mengelompokkan Data
sulup <- inflowsul %>%
    group_by(Provinsi)
sulup
## # 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 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 2 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 3 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 6 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## # ... with 1 more variable: 2021 <dbl>
Mengurutkan Data
sulubah <- arrange(inflowsul, `2020`)
sulubah
## # 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 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## 2 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 3 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 4 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 5 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 6 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolom pada Tabel

sulup1 <- inflowsul %>%
    mutate(`2022` = inflowsul$`2021`/2)
sulup1 
## # A tibble: 6 x 13
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi  3697   4637   9405   6402  6.18e3  7002   6603   7522   8306   6921 
## 2 Sulawes~  5671.  6635. 21646.  7374. 6.29e3  7266.  7044.  7781.  7809.  6324.
## 3 Sulawes~  1563.  1885.  1520.  3000. 2.59e3  2665.  2806.  3701.  4042.  3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~   659.   964.  6093.  2256. 2.38e3  3491.  3618.  3632.  4390.  3353.
## 6 Sulawes~     0      0      0      0  4.92e1   536.   746.   606.   542.   329.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

Pada Tahun 2020
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2020`)) +
  geom_point() 

Pada Tahun 2018
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2018`)) +
  geom_point() 

ggplot dengan Grafik Batang

Pada Tahun 2020
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2020`)) +
  geom_bar(stat = "identity")

Pada Tahun 2018
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2018`)) +
  geom_bar(stat = "identity")


Referensi