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 Gomapu

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowgo <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/OutflowGomapu.xlsx") 
outflowgo
## # 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    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 2 Goronta~     0      0      0      0      0      0      0    927.  1951.  2382.
## 3 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## 6 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## # ... 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(outflowgo, `2019`)
go1
## # A tibble: 6 x 1
##   `2019`
##    <dbl>
## 1  4386 
## 2  1951.
## 3  2984.
## 4  4071.
## 5  9605.
## 6  3319.
sul2 <- select(outflowgo, `2015`, `2017`, `2019`, `2020`, `2021`)
sul2
## # A tibble: 6 x 5
##   `2015` `2017` `2019` `2020` `2021`
##    <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1  3808.  3939.  4386   4833.  2278.
## 2     0      0   1951.  2382.  1494.
## 3  2397.  2752.  2984.  2943.  1823.
## 4  3123.  3671.  4071.  3724.  1806.
## 5 11623. 10650.  9605. 12028.  5409.
## 6  1899.  2621.  3319.  3086.   857.

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(outflowgo, -`2014`)
go3
## # 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 Gomapu    2794.  3593.  4235.  3808.  3796.  3939.  4480.  4386   4833.  2278.
## 2 Goronta~     0      0      0      0      0      0    927.  1951.  2382.  1494.
## 3 Maluku ~  1631.  1677.  8578.  2397.  2246.  2752.  2678.  2984.  2943.  1823.
## 4 Maluku    2352.  2690.  4795.  3123.  3309.  3671.  3424.  4071.  3724.  1806.
## 5 Papua     9986. 13600.  7801. 11623. 11500. 10650. 12369.  9605. 12028.  5409.
## 6 Papua B~     0      0      0   1899.  1924.  2621.  3001.  3319.  3086.   857.

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 <- outflowgo %>%
  select(tahun = `2014`, `2020`, `2021`)
go4 
## # A tibble: 6 x 3
##    tahun `2020` `2021`
##    <dbl>  <dbl>  <dbl>
## 1  3229   4833.  2278.
## 2     0   2382.  1494.
## 3  1809.  2943.  1823.
## 4  2861.  3724.  1806.
## 5 11305. 12028.  5409.
## 6   170.  3086.   857.

Mengganti Tabel Tahun

library(dplyr)
gotahun <- outflowgo %>% 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    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 2 Goronta~     0      0      0      0      0      0      0    927.  1951.  2382.
## 3 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## 6 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai Tidak Duplikasi dari Variabel

Dari Sebuah Variabel
go4 <- distinct(outflowgo, `2021`)
go4
## # A tibble: 6 x 1
##   `2021`
##    <dbl>
## 1  2278.
## 2  1494.
## 3  1823.
## 4  1806.
## 5  5409.
## 6   857.
Dari Semua Variabel
go5 <- distinct(outflowgo, `2017`, .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    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 2 Goronta~     0      0      0      0      0      0      0    927.  1951.  2382.
## 3 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## 6 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## # ... 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 <- outflowgo %>%
  filter(Provinsi <= 'Gomapu') %>%
    select(`2019`,`2020`)
go6
## # A tibble: 1 x 2
##   `2019` `2020`
##    <dbl>  <dbl>
## 1   4386  4833.
go7 <- outflowgo %>%
  filter(Provinsi == 'Gomapu', Provinsi == 'Maluku Utara') %>%
    select( -`2016`)
go7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## #   2014 <dbl>, 2015 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(outflowgo)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku Utara" "Maluku" ...
##  $ 2011    : num [1:6] 2794 0 1631 2352 9986 ...
##  $ 2012    : num [1:6] 3593 0 1677 2690 13600 ...
##  $ 2013    : num [1:6] 4235 0 8578 4795 7801 ...
##  $ 2014    : num [1:6] 3229 0 1809 2861 11305 ...
##  $ 2015    : num [1:6] 3808 0 2397 3123 11623 ...
##  $ 2016    : num [1:6] 3796 0 2246 3309 11500 ...
##  $ 2017    : num [1:6] 3939 0 2752 3671 10650 ...
##  $ 2018    : num [1:6] 4480 927 2678 3424 12369 ...
##  $ 2019    : num [1:6] 4386 1951 2984 4071 9605 ...
##  $ 2020    : num [1:6] 4833 2382 2943 3724 12028 ...
##  $ 2021    : num [1:6] 2278 1494 1823 1806 5409 ...
str(outflowgo %>% 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] 2794 0 1631 2352 9986 ...
##  $ 2012    : num [1:6] 3593 0 1677 2690 13600 ...
##  $ 2013    : num [1:6] 4235 0 8578 4795 7801 ...
##  $ 2014    : num [1:6] 3229 0 1809 2861 11305 ...
##  $ 2015    : num [1:6] 3808 0 2397 3123 11623 ...
##  $ 2016    : num [1:6] 3796 0 2246 3309 11500 ...
##  $ 2017    : num [1:6] 3939 0 2752 3671 10650 ...
##  $ 2018    : num [1:6] 4480 927 2678 3424 12369 ...
##  $ 2019    : num [1:6] 4386 1951 2984 4071 9605 ...
##  $ 2020    : num [1:6] 4833 2382 2943 3724 12028 ...
##  $ 2021    : num [1:6] 2278 1494 1823 1806 5409 ...
##  - 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 <- outflowgo %>%
    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    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 2 Goronta~     0      0      0      0      0      0      0    927.  1951.  2382.
## 3 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## 6 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## # ... with 1 more variable: 2021 <dbl>
Mengurutkan Data
goubah <- arrange(outflowgo, `2019`)
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    927.  1951.  2382.
## 2 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 3 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Gomapu    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 6 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## # ... with 1 more variable: 2021 <dbl>

Menambahkan Kolom pada Tabel

goup1 <- outflowgo %>%
    mutate(`2022` = outflowgo$`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    2794.  3593.  4235.  3229   3808.  3796.  3939.  4480.  4386   4833.
## 2 Goronta~     0      0      0      0      0      0      0    927.  1951.  2382.
## 3 Maluku ~  1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.  2943.
## 4 Maluku    2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.  3724.
## 5 Papua     9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605. 12028.
## 6 Papua B~     0      0      0    170.  1899.  1924.  2621.  3001.  3319.  3086.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

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

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

ggplot dengan Grafik Batang

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

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


Referensi