Nama : Muhammad Ridho

NIM : 210605110102

Kelas : Liniear Algebra (C)

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

Universitas : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Jurusan : Teknik Informatika

Manipulasi data dengan library dplyr

Saat melakukan manipulasi data pada R kita dapat menggunakan package dplyr. Package ini dibuat oleh Handley Wickham dan Roman Francois yang berisi kumpulan fungsi yang memudahkan manipulasi data yaitu antara lain: sample() untuk mengambil sampel secara acak dari tabel, mutate() untuk menambah kolom, select() untuk mengambil data atau variabel yang dibutuhkan, arrange() untuk mengurutkan data, filter() untuk menyaring data, groupby() untuk mengelompokkan data dan lain lain.

Data outflow pada pulau Jawa

library(readxl)
manipulasioutflow <- read_excel(path = "outflow tahunan1.xlsx")
manipulasioutflow
## # 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 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## # ... with 1 more variable: `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.7
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'readr' 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()

Menghapus Beberapa Variabel yang Tidak Ingin Digunakan

jawa2011 <- select(manipulasioutflow, '2011')
jawa2011
## # A tibble: 6 x 1
##   `2011`
##    <dbl>
## 1 83511.
## 2 20782.
## 3 19975.
## 4  7538.
## 5 35217.
## 6     0
jawa2 <- select(manipulasioutflow, `2012`, `2014`, `2016`, `2018`, `2020`)
jawa2
## # A tibble: 6 x 5
##    `2012`  `2014`  `2016`  `2018`  `2020`
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 111363. 147069. 190568. 253125. 251363.
## 2  28895.  40857.  49405.  61358.  57235.
## 3  28493.  39110.  53659.  69368.  72342.
## 4   9486.  13171.  13013.  20357.  16619.
## 5  44489.  53931.  74491.  97995.  93374.
## 6      0       0       0    4047.  11793.

Memilih Variabel yang Ingin Digunakan

jawamin2011 <- select(manipulasioutflow, -'2017')
jawamin2011
## # A tibble: 6 x 11
##   Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2018` `2019` `2020` `2021`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.53e5 2.72e5 2.51e5 1.43e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 6.14e4 6.17e4 5.72e4 3.48e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.94e4 7.24e4 7.23e4 4.45e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 2.04e4 2.14e4 1.66e4 9.65e3
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.80e4 1.06e5 9.34e4 4.60e4
## 6 Banten       0  0          0  0      0      0      4.05e3 1.10e4 1.18e4 8.44e3

Sintaks ini menggunakan fungsi select, dan select ini tidak hanya untuk memilih kolom dalam jumlah banyak, melainkan juga bisa untuk mengganti nama kolomnya. misalnya :

jawamin1 <- manipulasioutflow %>%
  select(tahun = `2014`, `2018`, `2019`)
jawamin1
## # A tibble: 6 x 3
##     tahun  `2018`  `2019`
##     <dbl>   <dbl>   <dbl>
## 1 147069. 253125. 271957.
## 2  40857.  61358.  61692.
## 3  39110.  69368.  72363.
## 4  13171.  20357.  21353.
## 5  53931.  97995. 105514.
## 6      0    4047.  11035.

Mengganti Tabel Tahun

library(dplyr)
jawatahun2 <- manipulasioutflow %>% rename('2010' = '2011')
head(jawatahun2)
## # 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 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## # ... with 1 more variable: `2021` <dbl>

Mengambil Nilai yang Tidak Duplikasi dari Variabel

Dari Sebuah Variabel

jawa4 <- distinct(manipulasioutflow, `2015`)
jawa4
## # A tibble: 6 x 1
##    `2015`
##     <dbl>
## 1 171568.
## 2  47063.
## 3  46840.
## 4  14080.
## 5  63585.
## 6      0

Di Semua Variabel

jawa5 <- distinct(manipulasioutflow, `2015`, .keep_all = TRUE)
jawa5
## # 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 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## # ... with 1 more variable: `2021` <dbl>

Menyeleksi Baris pada Tabel

Baris tabel diseleksi dengan menggunakan fungsi filter().

jawa6 <- manipulasioutflow %>%
  filter(Provinsi <= 'Jawa Timur') %>%
    select(`2018`,`2019`)
jawa6
## # A tibble: 5 x 2
##    `2018`  `2019`
##     <dbl>   <dbl>
## 1 253125. 271957.
## 2  61358.  61692.
## 3  69368.  72363.
## 4  97995. 105514.
## 5   4047.  11035.
jawa7 <- manipulasioutflow %>%
  filter(Provinsi == 'Jawa Timur', Provinsi == 'Jawa Tengah') %>%
    select( -`2020`)
jawa7
## # 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>,
## #   2021 <dbl>
str(manipulasioutflow)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:6] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:6] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:6] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:6] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:6] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:6] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:6] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:6] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:6] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:6] 143340 34763 44455 9652 46029 ...
str(manipulasioutflow %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
##  $ 2011    : num [1:6] 83511 20782 19975 7538 35217 ...
##  $ 2012    : num [1:6] 111363 28895 28493 9486 44489 ...
##  $ 2013    : num [1:6] 98969 23067 29529 9708 36665 ...
##  $ 2014    : num [1:6] 147069 40857 39110 13171 53931 ...
##  $ 2015    : num [1:6] 171568 47063 46840 14080 63585 ...
##  $ 2016    : num [1:6] 190568 49405 53659 13013 74491 ...
##  $ 2017    : num [1:6] 228905 53825 62761 16810 93396 ...
##  $ 2018    : num [1:6] 253125 61358 69368 20357 97995 ...
##  $ 2019    : num [1:6] 271957 61692 72363 21353 105514 ...
##  $ 2020    : num [1:6] 251363 57235 72342 16619 93374 ...
##  $ 2021    : num [1:6] 143340 34763 44455 9652 46029 ...
##  - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:6] "Banten" "Jawa" "Jawa Barat" "Jawa Tengah" ...
##   ..$ .rows   : list<int> [1:6] 
##   .. ..$ : int 6
##   .. ..$ : int 1
##   .. ..$ : int 2
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 4
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Pengelompokkan dan Pengurutkan Data

Pengelompokkan Data

jawaup <- manipulasioutflow %>%
    group_by(Provinsi)
jawaup
## # 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 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## # ... with 1 more variable: `2021` <dbl>

Pengurutan data

jawaubah <- arrange(manipulasioutflow, `2012`)
jawaubah
## # 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 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## 2 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## # ... with 1 more variable: `2021` <dbl>

Menambahkan kolom pada tabel

jawaup1 <- manipulasioutflow %>%
    mutate(`2021` = manipulasioutflow$`2020`/2)
jawaup1
## # 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 Jawa     83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~  7538. 9.49e3  9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten       0  0          0  0      0      0      2.11e3 4.05e3 1.10e4 1.18e4
## # ... with 1 more variable: `2021` <dbl>

Visualisasi Data Tabel dengan ggplot

ggplot dengan Grafik Titik

ggplot(data = manipulasioutflow, mapping = aes(x = Provinsi, y = `2011`)) +
  geom_point()

ggplot(data = manipulasioutflow, mapping = aes(x = Provinsi, y = `2012`)) +
  geom_point()