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

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Fakultas : Sains dan Teknologi

Jurusan : Teknik Informatika

Kelas : (C) Linear Algebra

NIM : 210605110058

Manipulasi Data dengan dplyr

Untuk memanipulasi data di R , sebenarnya dapat dilakukan secara “manual” menggunakan syntax R , tetapi hal ini cukup menyulitkan jika data yang akan kita gunakan harus dimanipulasi secara masif dan complex, sehingga diperlukan library yang mempermudah proses manipulasi data ,salah satunya adalah library “dplyr” sebelum masuk kedalam cara menggunakan dplyr, kita kenali dulu apa saja fungsi-fungsi yang dimiliki oleh library ini, sebagai berikut.

Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi. Cara menginstall package dplyr yaitu sebagai berikut:

install.package(dplyr)

Sedangkan untuk memanggil dplyr yaitu dengan sintaks:

library(dplyr)

Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi.

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
library(readxl)
InflowBaliNusra <- read_excel(path = "C:/Users/ASUS/Documents/excel_algebra/InflowBaliNusra2.xlsx")
InflowBaliNusra
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... 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.2
## 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()

Memilih atau Membuang Beberapa Variabel yang Tidak Digunakan

BaliNusra1 <- select(InflowBaliNusra, `2020`)
BaliNusra1
## # A tibble: 4 x 1
##   `2020`
##    <dbl>
## 1 29400.
## 2 14735.
## 3  8007.
## 4  6657.
BaliNusra2 <- select(InflowBaliNusra, `2011`, `2013`, `2015`, `2019`, `2021`)
BaliNusra2
## # A tibble: 4 x 5
##   `2011` `2013` `2015` `2019` `2021`
##    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 10322. 17512. 23008. 38116. 18892.
## 2  6394.  5066. 13072. 21422.  7505.
## 3  1803.  7024.  6285.  9614.  5888.
## 4  2125.  5422.  3651.  7080.  5498.

Jika variabel yang ingin Anda pilih cukup banyak sedangkan variabel yang ingin Anda buang lebih sedikit, Anda dapat menuliskan nama variabel dengan menambahkan tanda negatif (-) di depan nama atau indeks masing-masing variabel.

BaliNusra3 <- select(InflowBaliNusra, -`2021`)
BaliNusra3
## # A tibble: 4 x 11
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... with 1 more variable: `2020` <dbl>

Selain memilih kolom, select() juga dapat digunakan untuk mengubah nama kolom, misalnya

BaliNusraa <- InflowBaliNusra %>%
  select(tahun = `2014`, `2015`, `2016`)
BaliNusraa
## # A tibble: 4 x 3
##    tahun `2015` `2016`
##    <dbl>  <dbl>  <dbl>
## 1 20807. 23008. 30965.
## 2 11590. 13072. 17914.
## 3  5704.  6285.  8842.
## 4  3512.  3651.  4210.

Mengambil Nilai Unik (Tidak Duplikasi) dari Sebuah Variable

BaliNusra4 <- distinct(InflowBaliNusra, `2019`)
BaliNusra4
## # A tibble: 4 x 1
##   `2019`
##    <dbl>
## 1 38116.
## 2 21422.
## 3  9614.
## 4  7080.

Untuk mendapatkan nilai unik dari semua baris berdasarkan variabel tertentu tambahkan opsi .keep_all = TRUE setelah nama variable dalam fungsi distinct().

BaliNusra5 <- distinct(InflowBaliNusra, `2019`, .keep_all = TRUE)
BaliNusra5
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Menyeleksi baris

filter() digunakan untuk menyeleksi atau memilih baris atau observasi berdasarkan nilainya. Dalam filter(), kita dapat menggunakan berbagai operator, seperti operator dasar <, <=, >, >, == (sama dengan) dan %in% (bagian dari). Argumen filter() yang lebih dari satu dapat digabungkan dengan bolean operator, yaitu & (and/dan), | (or/atau) dan ! (not/tidak).

BaliNusra6 <- InflowBaliNusra %>%
  filter(Keterangan <= 'Bali Nusra') %>%
    select(`2015`,`2016`)
BaliNusra6
## # A tibble: 2 x 2
##   `2015` `2016`
##    <dbl>  <dbl>
## 1 23008. 30965.
## 2 13072. 17914.
BaliNusra7 <- InflowBaliNusra %>%
  filter(Keterangan == 'Bali Nusra', Keterangan == 'Bali Nusra') %>%
    select( -`2016`)
BaliNusra7
## # A tibble: 1 x 11
##   Keterangan `2011` `2012` `2013` `2014` `2015` `2017` `2018` `2019` `2020`
##   <chr>       <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra 10322. 14613. 17512. 20807. 23008. 30797. 33866. 38116. 29400.
## # ... with 1 more variable: `2021` <dbl>
str(InflowBaliNusra)
## tibble [4 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
##  $ 2011      : num [1:4] 10322 6394 1803 2125
##  $ 2012      : num [1:4] 14613 8202 3676 2735
##  $ 2013      : num [1:4] 17512 5066 7024 5422
##  $ 2014      : num [1:4] 20807 11590 5704 3512
##  $ 2015      : num [1:4] 23008 13072 6285 3651
##  $ 2016      : num [1:4] 30965 17914 8842 4210
##  $ 2017      : num [1:4] 30797 16962 8383 5452
##  $ 2018      : num [1:4] 33866 18610 9140 6116
##  $ 2019      : num [1:4] 38116 21422 9614 7080
##  $ 2020      : num [1:4] 29400 14735 8007 6657
##  $ 2021      : num [1:4] 18892 7505 5888 5498
str(InflowBaliNusra %>% group_by(Keterangan))
## grouped_df [4 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Keterangan: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
##  $ 2011      : num [1:4] 10322 6394 1803 2125
##  $ 2012      : num [1:4] 14613 8202 3676 2735
##  $ 2013      : num [1:4] 17512 5066 7024 5422
##  $ 2014      : num [1:4] 20807 11590 5704 3512
##  $ 2015      : num [1:4] 23008 13072 6285 3651
##  $ 2016      : num [1:4] 30965 17914 8842 4210
##  $ 2017      : num [1:4] 30797 16962 8383 5452
##  $ 2018      : num [1:4] 33866 18610 9140 6116
##  $ 2019      : num [1:4] 38116 21422 9614 7080
##  $ 2020      : num [1:4] 29400 14735 8007 6657
##  $ 2021      : num [1:4] 18892 7505 5888 5498
##  - attr(*, "groups")= tibble [4 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Keterangan: 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 Data

BaliNusraUp <- InflowBaliNusra %>%
    group_by(Keterangan)
BaliNusraUp
## # A tibble: 4 x 12
## # Groups:   Keterangan [4]
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Menambah Kolom

BaliNusraUp1 <- InflowBaliNusra %>%
    mutate(`2022` = InflowBaliNusra$`2021`/2)
BaliNusraUp1 
## # A tibble: 4 x 13
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `2022` <dbl>

Mengurutkan Data

BaliNusraUbah <- arrange(InflowBaliNusra, `2011`)
BaliNusraUbah
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 2 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## 3 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 4 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>

Visualisasi Data dengan ggplot

ggplot2 adalah package yang berfungsi membuat grafik yang merepresentasikan data dengan menerapkan warna, simbol, dan lainnya. Package ini memiliki banyak fungsi dan plot yang bisa kita pilih untuk memvisualisasikan data. Beberapa kelebihan yang dimiliki ggplot2 yaitu antara lain fleksibel dalam penggunaannya, fungsi yang lengkap untuk visualisasi, dan penggunaan metodenya tidak ribet. Cara install dan penggunaan package ggplot2 sama dengan package yang sudah dibahas di poin sebelumnya yaitu:

install.package(ggplot2) #install package

library(ggplot2) #memanggil ggplot2

Contoh visualisasi data dengan ggplot2 bisa dilihat dibawah ini:

ggplot(data = InflowBaliNusra, mapping = aes(x = Keterangan, y = `2015`)) +
  geom_point()

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

ggplot(InflowBaliNusra, aes(Keterangan,`2021`, color=`Keterangan`))+
  geom_point()

Referensi

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

https://medium.com/@13.7641/kali-ini-kita-akan-beajar-bagaimana-cara-memanipulasi-data-menggunakan-salah-satu-package-di-r-2314d88f408a