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 Gomapu

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
inflowgo <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/InflowGomapu.xlsx") 
inflowgo
## # 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 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## # ... 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

go1 <- select(inflowgo, `2015`)
go1
## # A tibble: 6 x 1
##   `2015`
##    <dbl>
## 1  1882 
## 2     0 
## 3  1007.
## 4  1790.
## 5  6099.
## 6   518.
sul2 <- select(inflowgo, `2017`, `2018`, `2019`, `2020`, `2021`)
sul2
## # A tibble: 6 x 5
##   `2017` `2018` `2019` `2020` `2021`
##    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1  2221   3011   1071   3640   2785 
## 2     0   1088.  1983.  2227.  1770.
## 3  1339.  1530.  1924.  1876.  1738.
## 4  2484.  3210.  4056.  2909.  2795.
## 5  6353.  8076.  9259.  9556.  8509.
## 6   933.  1153.  1448.  1635.  1907.

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.

go3 <- select(inflowgo, -`2019`)
go3
## # A tibble: 6 x 11
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   3640   2785 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  2227.  1770.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1876.  1738.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  2909.  2795.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9556.  8509.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1635.  1907.

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 :

go4 <- inflowgo %>%
  select(tahun = `2014`, `2015`, `2016`)
go4 
## # A tibble: 6 x 3
##    tahun `2015` `2016`
##    <dbl>  <dbl>  <dbl>
## 1 1918    1882   2147 
## 2    0       0      0 
## 3 1006.   1007.  1259.
## 4 1781.   1790.  2367.
## 5 6794.   6099.  6291.
## 6   11.7   518.   818.

Mengganti Tabel Tahun

library(dplyr)
gotahun <- inflowgo %>% rename('2010' = '2011')
head(gotahun)
## # 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 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

Dari Sebuah Variabel
go4 <- distinct(inflowgo, `2020`)
go4
## # A tibble: 6 x 1
##   `2020`
##    <dbl>
## 1  3640 
## 2  2227.
## 3  1876.
## 4  2909.
## 5  9556.
## 6  1635.
Dari Semua Variabel
go5 <- distinct(inflowgo, `2018`, .keep_all = TRUE)
go5
## # 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 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## # ... 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.

go6 <- inflowgo %>%
  filter(Provinsi <= 'Gomapu') %>%
    select(`2020`,`2021`)
go6
## # A tibble: 1 x 2
##   `2020` `2021`
##    <dbl>  <dbl>
## 1   3640   2785
go7 <- inflowgo %>%
  filter(Provinsi == 'Gomapu', Provinsi == 'Gorontalo') %>%
    select( -`2018`)
go7
## # 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(inflowgo)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku Utara" "Maluku" ...
##  $ 2011    : num [1:6] 1313 0 586 1273 4710 ...
##  $ 2012    : num [1:6] 1565 0 633 1147 6047 ...
##  $ 2013    : num [1:6] 3385 0 10273 4341 2131 ...
##  $ 2014    : num [1:6] 1918 0 1006 1781 6794 ...
##  $ 2015    : num [1:6] 1882 0 1007 1790 6099 ...
##  $ 2016    : num [1:6] 2147 0 1259 2367 6291 ...
##  $ 2017    : num [1:6] 2221 0 1339 2484 6353 ...
##  $ 2018    : num [1:6] 3011 1088 1530 3210 8076 ...
##  $ 2019    : num [1:6] 1071 1983 1924 4056 9259 ...
##  $ 2020    : num [1:6] 3640 2227 1876 2909 9556 ...
##  $ 2021    : num [1:6] 2785 1770 1738 2795 8509 ...
str(inflowgo %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku Utara" "Maluku" ...
##  $ 2011    : num [1:6] 1313 0 586 1273 4710 ...
##  $ 2012    : num [1:6] 1565 0 633 1147 6047 ...
##  $ 2013    : num [1:6] 3385 0 10273 4341 2131 ...
##  $ 2014    : num [1:6] 1918 0 1006 1781 6794 ...
##  $ 2015    : num [1:6] 1882 0 1007 1790 6099 ...
##  $ 2016    : num [1:6] 2147 0 1259 2367 6291 ...
##  $ 2017    : num [1:6] 2221 0 1339 2484 6353 ...
##  $ 2018    : num [1:6] 3011 1088 1530 3210 8076 ...
##  $ 2019    : num [1:6] 1071 1983 1924 4056 9259 ...
##  $ 2020    : num [1:6] 3640 2227 1876 2909 9556 ...
##  $ 2021    : num [1:6] 2785 1770 1738 2795 8509 ...
##  - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku" "Maluku Utara" ...
##   ..$ .rows   : list<int> [1:6] 
##   .. ..$ : int 1
##   .. ..$ : int 2
##   .. ..$ : int 4
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 6
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Mengelompokkan dan Mengurutkan Data

Mengelompokkan Data
goup <- inflowgo %>%
    group_by(Provinsi)
goup
## # 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 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## # ... with 1 more variable: 2021 <dbl>
Mengurutkan Data
goubah <- arrange(inflowgo, `2016`)
goubah
## # 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 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 2 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 5 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 6 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolom pada Tabel

goup1 <- inflowgo %>%
    mutate(`2022` = inflowgo$`2021`/2)
goup1 
## # 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 Gomapu    1313   1565   3385  1918    1882   2147   2221   3011   1071   3640 
## 2 Goronta~     0      0      0     0       0      0      0   1088.  1983.  2227.
## 3 Maluku ~   586.   633. 10273. 1006.   1007.  1259.  1339.  1530.  1924.  1876.
## 4 Maluku    1273.  1147.  4341. 1781.   1790.  2367.  2484.  3210.  4056.  2909.
## 5 Papua     4710.  6047.  2131. 6794.   6099.  6291.  6353.  8076.  9259.  9556.
## 6 Papua B~     0      0      0    11.7   518.   818.   933.  1153.  1448.  1635.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

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

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

ggplot dengan Grafik Batang

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

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


Referensi