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 Sulawesi

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowsul <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/OutflowSulawesi.xlsx") 
outflowsul
## # 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  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... 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(outflowsul, `2019`)
sul1
## # A tibble: 6 x 1
##   `2019`
##    <dbl>
## 1  7758.
## 2  7367.
## 3  5531.
## 4 18089.
## 5  5056.
## 6  2749.
sul2 <- select(outflowsul, `2015`, `2016`, `2017`, `2018`, `2019`)
sul2
## # A tibble: 6 x 5
##   `2015` `2016` `2017` `2018` `2019`
##    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1  6822.  6833   7321.  7708.  7758.
## 2  7202.  7707.  8421.  7605.  7367.
## 3  5310.  4962.  5226.  5578.  5531.
## 4 16236. 15494. 15159. 16779. 18089.
## 5  4716.  4488.  5293.  5224.  5056.
## 6   647.  1514.  2504.  3350.  2749.

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(outflowsul, -`2020`)
sul3
## # A tibble: 6 x 11
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Sulawesi  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  4483.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  3050.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  2763.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 12017.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  2507.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2079.

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 <- outflowsul %>%
  select(tahun = `2014`, `2020`, `2021`)
sul4 
## # A tibble: 6 x 3
##    tahun `2020` `2021`
##    <dbl>  <dbl>  <dbl>
## 1  6417   8133.  4483.
## 2  7207.  7437.  3050.
## 3  5696.  4674.  2763.
## 4 15645. 20503. 12017.
## 5  3537.  5129.  2507.
## 6     0   2921.  2079.

Mengganti Tabel Tahun

library(dplyr)
sultahun <- outflowsul %>% 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  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

Dari Sebuah Variabel
sul4 <- distinct(outflowsul, `2018`)
sul4
## # A tibble: 6 x 1
##   `2018`
##    <dbl>
## 1  7708.
## 2  7605.
## 3  5578.
## 4 16779.
## 5  5224.
## 6  3350.
Dari Semua Variabel
sul5 <- distinct(outflowsul, `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  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... 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 <- outflowsul %>%
  filter(Provinsi <= 'Sulawesi') %>%
    select(`2018`,`2019`)
sul6
## # A tibble: 1 x 2
##   `2018` `2019`
##    <dbl>  <dbl>
## 1  7708.  7758.
sul7 <- outflowsul %>%
  filter(Provinsi == 'Sulawesi', Provinsi == 'Sulawesi Selatan') %>%
    select( -`2013`)
sul7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2014 <dbl>,
## #   2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(outflowsul)
## 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] 4496 6606 4017 8967 2889 ...
##  $ 2012    : num [1:6] 5131 6375 4458 11873 2950 ...
##  $ 2013    : num [1:6] 8602 22740 4544 11485 4239 ...
##  $ 2014    : num [1:6] 6417 7207 5696 15645 3537 ...
##  $ 2015    : num [1:6] 6822 7202 5310 16236 4716 ...
##  $ 2016    : num [1:6] 6833 7707 4962 15494 4488 ...
##  $ 2017    : num [1:6] 7321 8421 5226 15159 5293 ...
##  $ 2018    : num [1:6] 7708 7605 5578 16779 5224 ...
##  $ 2019    : num [1:6] 7758 7367 5531 18089 5056 ...
##  $ 2020    : num [1:6] 8133 7437 4674 20503 5129 ...
##  $ 2021    : num [1:6] 4483 3050 2763 12017 2507 ...
str(outflowsul %>% 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] 4496 6606 4017 8967 2889 ...
##  $ 2012    : num [1:6] 5131 6375 4458 11873 2950 ...
##  $ 2013    : num [1:6] 8602 22740 4544 11485 4239 ...
##  $ 2014    : num [1:6] 6417 7207 5696 15645 3537 ...
##  $ 2015    : num [1:6] 6822 7202 5310 16236 4716 ...
##  $ 2016    : num [1:6] 6833 7707 4962 15494 4488 ...
##  $ 2017    : num [1:6] 7321 8421 5226 15159 5293 ...
##  $ 2018    : num [1:6] 7708 7605 5578 16779 5224 ...
##  $ 2019    : num [1:6] 7758 7367 5531 18089 5056 ...
##  $ 2020    : num [1:6] 8133 7437 4674 20503 5129 ...
##  $ 2021    : num [1:6] 4483 3050 2763 12017 2507 ...
##  - 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 <- outflowsul %>%
    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  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... with 1 more variable: 2021 <dbl>
Mengurutkan Data
sulubah <- arrange(outflowsul, `2021`)
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    647.  1514.  2504.  3350.  2749.  2921.
## 2 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 5 Sulawesi  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 6 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolom pada Tabel

sulup1 <- outflowsul %>%
    mutate(`2022` = outflowsul$`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  4496.  5131.  8602.  6417   6822.  6833   7321.  7708.  7758.  8133.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

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

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

ggplot dengan Grafik Batang

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

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


Referensi