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 Outflow di Pulau Bali

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowbali <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/OutflowBali.xlsx") 
outflowbali
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 4 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## # ... 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

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

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 = `2015`, `2020`, `2021`)
bali4
## # A tibble: 4 x 3
##    tahun `2020` `2021`
##    <dbl>  <dbl>  <dbl>
## 1 26728. 31224. 15224.
## 2 14471. 14323.  6531.
## 3  6728.  8546.  5222.
## 4  5530.  8356.  3472.

Mengganti Tabel Tahun

library(dplyr)
balitahun <- outflowbali %>% rename('2010' = '2011')
head(balitahun)
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 4 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

Dari Sebuah Variabel
bali4 <- distinct(outflowbali, `2020`)
bali4
## # A tibble: 4 x 1
##   `2020`
##    <dbl>
## 1 31224.
## 2 14323.
## 3  8546.
## 4  8356.
Dari Semua Variabel
bali5 <- distinct(outflowbali, `2018`, .keep_all = TRUE)
bali5
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 4 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## # ... 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.

bali6 <- outflowbali %>%
  filter(Provinsi <= 'Bali') %>%
    select(`2020`,`2021`)
bali6
## # A tibble: 1 x 2
##   `2020` `2021`
##    <dbl>  <dbl>
## 1 14323.  6531.
bali7 <- outflowbali %>%
  filter(Provinsi == 'Bali', Provinsi == 'Nusa Tenggara Barat') %>%
    select( -`2021`)
bali7
## # 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>,
## #   2020 <dbl>
str(outflowbali)
## tibble [4 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: 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(Provinsi))
## grouped_df [4 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: 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)
##   ..$ Provinsi: 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
baliup <- outflowbali %>%
    group_by(Provinsi)
baliup
## # A tibble: 4 x 12
## # Groups:   Provinsi [4]
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 4 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## # ... with 1 more variable: 2021 <dbl>
Mengurutkan Data
baliubah <- arrange(outflowbali, `2017`)
baliubah
## # A tibble: 4 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 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## 2 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 3 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 4 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolom pada Tabel

baliup1 <- outflowbali %>%
    mutate(`2022` = outflowbali$`2021`/2)
baliup1 
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali      8912. 10782.  7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~  3819.  4379. 10628.  5620.  6728.  8149.  8770.  9271. 10288.  8546.
## 4 Nusa Te~  3693.  4260. 11524.  4668.  5530.  5652.  7569.  7555.  7738.  8356.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

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

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

ggplot dengan Grafik Batang

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

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


Referensi