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.

Mengimport Data Inflow Indonesia

library(readxl)
ManipulasiInflow <- read_excel("Sulawesi.xlsx")
ManipulasiInflow
## # A tibble: 36 x 12
##    Propinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775.  5514.  5799.  7509.
##  2 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 35617. 41769. 47112.
##  3 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 15312. 15058. 14750.
##  4 Riau            3012.  4447.  8933. 6.36e3  7156.  8211.  8553. 10730. 10915.
##  5 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317.  4412.  5134.  6077.
##  6 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398.  4404.  5657.  6486.
##  7 Sumatera Sela~  7820.  9126.  8647. 1.00e4 10797. 12752. 13075. 14267. 14812.
##  8 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889.  3620.  4150.  5789.
##  9 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 12078. 13415. 17046.
## 10 Kep. Bangka B~     0      0      0  1.37e1  1177.  1544.  1164.  1517.  3265.
## # ... with 26 more rows, and 2 more variables: `2020` <dbl>, `2021` <dbl>

Memilih Kolom berdasarkan Nama Kolom

Memilih Kolom “2013” untuk ditampilkan datanya

sulawesiUtara1 <- dplyr::select(ManipulasiInflow,"2013")
sulawesiUtara1
## # A tibble: 36 x 1
##    `2013`
##     <dbl>
##  1 36337.
##  2 18120.
##  3 14056.
##  4  8933.
##  5  3378.
##  6  3047.
##  7  8647.
##  8  2378.
##  9  3474.
## 10     0 
## # ... with 26 more rows

Menghapus Kolom berdasarkan Nama Kolom

Hanya Menghapus Kolom “2011”, dan menampilkan sisa kolom yang ada.

library(tidyverse)
## -- 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
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
sulawesinon2011 <- select(ManipulasiInflow, -"2011")
sulawesinon2011
## # A tibble: 36 x 11
##    Propinsi       `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Aceh            2620. 36337. 4.57e3  4710.  5775.  5514.  5799.  7509.  6641.
##  2 Sumatera Utara 25981. 18120. 3.05e4 30254. 34427. 35617. 41769. 47112. 36609.
##  3 Sumatera Barat 11192. 14056. 1.41e4 13309. 14078. 15312. 15058. 14750. 10696.
##  4 Riau            4447.  8933. 6.36e3  7156.  8211.  8553. 10730. 10915.  9148.
##  5 Kep. Riau       2236.  3378. 2.56e3  3218.  4317.  4412.  5134.  6077.  6175.
##  6 Jambi           2138.  3047. 5.17e3  4978.  4398.  4404.  5657.  6486.  5628.
##  7 Sumatera Sela~  9126.  8647. 1.00e4 10797. 12752. 13075. 14267. 14812. 11756.
##  8 Bengkulu        1201.  2378. 3.26e3  2791.  2889.  3620.  4150.  5789.  4971.
##  9 Lampung         6969.  3474. 9.45e3  8160.  9373. 12078. 13415. 17046. 15158.
## 10 Kep. Bangka B~     0      0  1.37e1  1177.  1544.  1164.  1517.  3265.  2562.
## # ... with 26 more rows, and 1 more variable: `2021` <dbl>
sulawesi2013 <- ManipulasiInflow %>% select('2013')
sulawesi2013
## # A tibble: 36 x 1
##    `2013`
##     <dbl>
##  1 36337.
##  2 18120.
##  3 14056.
##  4  8933.
##  5  3378.
##  6  3047.
##  7  8647.
##  8  2378.
##  9  3474.
## 10     0 
## # ... with 26 more rows

Menganti nama kolom

Pada data akan menganti nama kolom “2011” dengan nama kolom “2010”.

library(dplyr)
sulawesitahun <- ManipulasiInflow %>% rename('2010' = '2011')
sulawesitahun
## # A tibble: 36 x 12
##    Propinsi       `2010` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775.  5514.  5799.  7509.
##  2 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 35617. 41769. 47112.
##  3 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 15312. 15058. 14750.
##  4 Riau            3012.  4447.  8933. 6.36e3  7156.  8211.  8553. 10730. 10915.
##  5 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317.  4412.  5134.  6077.
##  6 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398.  4404.  5657.  6486.
##  7 Sumatera Sela~  7820.  9126.  8647. 1.00e4 10797. 12752. 13075. 14267. 14812.
##  8 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889.  3620.  4150.  5789.
##  9 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 12078. 13415. 17046.
## 10 Kep. Bangka B~     0      0      0  1.37e1  1177.  1544.  1164.  1517.  3265.
## # ... with 26 more rows, and 2 more variables: `2020` <dbl>, `2021` <dbl>

Menampilkan data teratas

head(sulawesitahun)
## # A tibble: 6 x 12
##   Propinsi `2010` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
##   <chr>     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Aceh      2308.  2620. 36337.  4567.  4710.  5775.  5514.  5799.  7509.  6641.
## 2 Sumater~ 23238. 25981. 18120. 30503. 30254. 34427. 35617. 41769. 47112. 36609.
## 3 Sumater~  9385. 11192. 14056. 14103. 13309. 14078. 15312. 15058. 14750. 10696.
## 4 Riau      3012.  4447.  8933.  6358.  7156.  8211.  8553. 10730. 10915.  9148.
## 5 Kep. Ri~  1426.  2236.  3378.  2563.  3218.  4317.  4412.  5134.  6077.  6175.
## 6 Jambi     1868.  2138.  3047.  5169.  4978.  4398.  4404.  5657.  6486.  5628.
## # ... with 1 more variable: `2021` <dbl>

Menampilkan Nilai dengan kondisi tertentu

Menapilkan nilai pada kolom “2011” dan “2012” di Sulawesi Utara.

library(dplyr)
sulawesibali <- ManipulasiInflow %>%
    filter(Propinsi <= "Sulawesi Utara") %>%
    select('2011','2012')
sulawesibali
## # A tibble: 32 x 2
##     `2011`  `2012`
##      <dbl>   <dbl>
##  1   2308.   2620.
##  2   3012.   4447.
##  3   1426.   2236.
##  4   1868.   2138.
##  5   1153.   1201.
##  6   7690.   6969.
##  7      0       0 
##  8  62958.  76665.
##  9 123917. 160482.
## 10  43775.  60629.
## # ... with 22 more rows
library(dplyr)
sulawesiUp1 <- ManipulasiInflow %>%
    filter(Propinsi == 'Aceh', Propinsi == 'Suawesi Utara') %>%
    select(-'2011')
sulawesiUp1
## # A tibble: 0 x 11
## # ... with 11 variables: Propinsi <chr>, 2012 <dbl>, 2013 <dbl>, 2014 <dbl>,
## #   2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## #   2021 <dbl>
str(ManipulasiInflow)
## tibble [36 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Propinsi: chr [1:36] "Aceh" "Sumatera Utara" "Sumatera Barat" "Riau" ...
##  $ 2011    : num [1:36] 2308 23238 9385 3012 1426 ...
##  $ 2012    : num [1:36] 2620 25981 11192 4447 2236 ...
##  $ 2013    : num [1:36] 36337 18120 14056 8933 3378 ...
##  $ 2014    : num [1:36] 4567 30503 14103 6358 2563 ...
##  $ 2015    : num [1:36] 4710 30254 13309 7156 3218 ...
##  $ 2016    : num [1:36] 5775 34427 14078 8211 4317 ...
##  $ 2017    : num [1:36] 5514 35617 15312 8553 4412 ...
##  $ 2018    : num [1:36] 5799 41769 15058 10730 5134 ...
##  $ 2019    : num [1:36] 7509 47112 14750 10915 6077 ...
##  $ 2020    : num [1:36] 6641 36609 10696 9148 6175 ...
##  $ 2021    : num [1:36] 3702 31840 10748 7769 5009 ...
str(ManipulasiInflow %>% group_by(Propinsi))
## grouped_df [36 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Propinsi: chr [1:36] "Aceh" "Sumatera Utara" "Sumatera Barat" "Riau" ...
##  $ 2011    : num [1:36] 2308 23238 9385 3012 1426 ...
##  $ 2012    : num [1:36] 2620 25981 11192 4447 2236 ...
##  $ 2013    : num [1:36] 36337 18120 14056 8933 3378 ...
##  $ 2014    : num [1:36] 4567 30503 14103 6358 2563 ...
##  $ 2015    : num [1:36] 4710 30254 13309 7156 3218 ...
##  $ 2016    : num [1:36] 5775 34427 14078 8211 4317 ...
##  $ 2017    : num [1:36] 5514 35617 15312 8553 4412 ...
##  $ 2018    : num [1:36] 5799 41769 15058 10730 5134 ...
##  $ 2019    : num [1:36] 7509 47112 14750 10915 6077 ...
##  $ 2020    : num [1:36] 6641 36609 10696 9148 6175 ...
##  $ 2021    : num [1:36] 3702 31840 10748 7769 5009 ...
##  - attr(*, "groups")= tibble [36 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Propinsi: chr [1:36] "Aceh" "Bali" "Banten" "Bengkulu" ...
##   ..$ .rows   : list<int> [1:36] 
##   .. ..$ : int 1
##   .. ..$ : int 18
##   .. ..$ : int 17
##   .. ..$ : int 8
##   .. ..$ : int 11
##   .. ..$ : int 31
##   .. ..$ : int 6
##   .. ..$ : int 12
##   .. ..$ : int 13
##   .. ..$ : int 14
##   .. ..$ : int 16
##   .. ..$ : int 21
##   .. ..$ : int 23
##   .. ..$ : int 22
##   .. ..$ : int 24
##   .. ..$ : int 25
##   .. ..$ : int 10
##   .. ..$ : int 5
##   .. ..$ : int 9
##   .. ..$ : int 33
##   .. ..$ : int 32
##   .. ..$ : int 36
##   .. ..$ : int 19
##   .. ..$ : int 20
##   .. ..$ : int 34
##   .. ..$ : int 35
##   .. ..$ : int 4
##   .. ..$ : int 30
##   .. ..$ : int 28
##   .. ..$ : int 27
##   .. ..$ : int 29
##   .. ..$ : int 26
##   .. ..$ : int 3
##   .. ..$ : int 7
##   .. ..$ : int 2
##   .. ..$ : int 15
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Pengelompokkan dan Pengurutkan Data

Pengelompokkan Data

sulawesiUp3 <- ManipulasiInflow %>%
    group_by(Propinsi)
sulawesiUp3
## # A tibble: 36 x 12
## # Groups:   Propinsi [36]
##    Propinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775.  5514.  5799.  7509.
##  2 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 35617. 41769. 47112.
##  3 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 15312. 15058. 14750.
##  4 Riau            3012.  4447.  8933. 6.36e3  7156.  8211.  8553. 10730. 10915.
##  5 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317.  4412.  5134.  6077.
##  6 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398.  4404.  5657.  6486.
##  7 Sumatera Sela~  7820.  9126.  8647. 1.00e4 10797. 12752. 13075. 14267. 14812.
##  8 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889.  3620.  4150.  5789.
##  9 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 12078. 13415. 17046.
## 10 Kep. Bangka B~     0      0      0  1.37e1  1177.  1544.  1164.  1517.  3265.
## # ... with 26 more rows, and 2 more variables: `2020` <dbl>, `2021` <dbl>

Pengurutan data

sulawesiutaraubah <- arrange(ManipulasiInflow, `2012`)
sulawesiutaraubah
## # A tibble: 36 x 12
##    Propinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Kep. Bangka B~     0      0      0    13.7 1177.   1544.  1164.  1517.  3265.
##  2 Banten             0      0      0     0      0       0   1495.  4832.  4477.
##  3 Kalimantan Ut~     0      0      0     0      0       0    341.   917.  1472.
##  4 Sulawesi Barat     0      0      0     0     49.2   536.   746.   606.   542.
##  5 Gorontalo          0      0      0     0      0       0      0   1088.  1983.
##  6 Papua Barat        0      0      0    11.7  518.    818.   933.  1153.  1448.
##  7 Maluku Utara     586.   633. 10273. 1006.  1007.   1259.  1339.  1530.  1924.
##  8 Sulawesi Teng~   659.   964.  6093. 2256.  2385.   3491.  3618.  3632.  4390.
##  9 Kalimantan Te~   779.  1135. 19328. 1887.  3547.   3694.  3655.  4083.  4385.
## 10 Maluku          1273.  1147.  4341. 1781.  1790.   2367.  2484.  3210.  4056.
## # ... with 26 more rows, and 2 more variables: `2020` <dbl>, `2021` <dbl>

Menambahkan Kolom

sulawesiUp1 <- ManipulasiInflow %>%
    mutate('2010' = ManipulasiInflow$`2011`/2)
sulawesiUp1 
## # A tibble: 36 x 13
##    Propinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775.  5514.  5799.  7509.
##  2 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 35617. 41769. 47112.
##  3 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 15312. 15058. 14750.
##  4 Riau            3012.  4447.  8933. 6.36e3  7156.  8211.  8553. 10730. 10915.
##  5 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317.  4412.  5134.  6077.
##  6 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398.  4404.  5657.  6486.
##  7 Sumatera Sela~  7820.  9126.  8647. 1.00e4 10797. 12752. 13075. 14267. 14812.
##  8 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889.  3620.  4150.  5789.
##  9 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 12078. 13415. 17046.
## 10 Kep. Bangka B~     0      0      0  1.37e1  1177.  1544.  1164.  1517.  3265.
## # ... with 26 more rows, and 3 more variables: `2020` <dbl>, `2021` <dbl>,
## #   `2010` <dbl>

Visualisasi Data Tabel dengan ggplot ggplot dengan Grafik Titik

ggplot(data = ManipulasiInflow, mapping = aes(x = Propinsi, y = `2011`)) +
  geom_point()

ggplot(data = ManipulasiInflow, mapping = aes(x = Propinsi, y = `2020`)) +
  geom_point()

Refrensi

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