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 sulawesi

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
manipulasioutflow <- read_excel(path = "outflow tahunan1.xlsx")
manipulasioutflow  
## # A tibble: 11 x 12
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723.
##  2 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
##  3 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
##  4 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
##  5 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
##  6 Sulawesi Barat     0      0      0      0    647.  1514.  2504.  3350.  2749.
##  7 Gorontalo          0      0      0      0      0      0      0    927.  1951.
##  8 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.
##  9 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605.
## 11 Papua Barat        0      0      0    170.  1899.  1924.  2621.  3001.  3319.
## # ... with 2 more variables: 2020 <dbl>, 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.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.2
## Warning: package 'readr' was built under R version 4.1.2
## Warning: package 'purrr' was built under R version 4.1.2
## Warning: package 'dplyr' was built under R version 4.1.2
## Warning: package 'forcats' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Menghapus Beberapa Variabel yang Tidak Ingin Digunakan

sulawesi2011 <- select(manipulasioutflow, '2011')
sulawesi2011
## # A tibble: 11 x 1
##    `2011`
##     <dbl>
##  1 36449.
##  2  6606.
##  3  4017.
##  4  8967.
##  5  2889.
##  6     0 
##  7     0 
##  8  1631.
##  9  2352.
## 10  9986.
## 11     0
sulawesi2 <- select(manipulasioutflow, `2012`, `2014`, `2016`, `2018`, `2020`)
sulawesi2
## # A tibble: 11 x 5
##    `2012` `2014` `2016` `2018` `2020`
##     <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 43623. 48231. 53145. 60935. 64828.
##  2  6375.  7207.  7707.  7605.  7437.
##  3  4458.  5696.  4962.  5578.  4674.
##  4 11873. 15645. 15494. 16779. 20503.
##  5  2950.  3537.  4488.  5224.  5129.
##  6     0      0   1514.  3350.  2921.
##  7     0      0      0    927.  2382.
##  8  1677.  1809.  2246.  2678.  2943.
##  9  2690.  2861.  3309.  3424.  3724.
## 10 13600. 11305. 11500. 12369. 12028.
## 11     0    170.  1924.  3001.  3086.

Memilih Variabel yang Ingin Digunakan

sulawesimin2011 <- select(manipulasioutflow, -'2017')
sulawesimin2011
## # A tibble: 11 x 11
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2018` `2019` `2020`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 60935. 60723. 64828.
##  2 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  7605.  7367.  7437.
##  3 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5578.  5531.  4674.
##  4 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 16779. 18089. 20503.
##  5 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5224.  5056.  5129.
##  6 Sulawesi Barat     0      0      0      0    647.  1514.  3350.  2749.  2921.
##  7 Gorontalo          0      0      0      0      0      0    927.  1951.  2382.
##  8 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2678.  2984.  2943.
##  9 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3424.  4071.  3724.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 12369.  9605. 12028.
## 11 Papua Barat        0      0      0    170.  1899.  1924.  3001.  3319.  3086.
## # ... with 1 more variable: 2021 <dbl>

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

sulawesimin1 <- manipulasioutflow %>%
  select(tahun = `2014`, `2018`, `2019`)
sulawesimin1
## # A tibble: 11 x 3
##     tahun `2018` `2019`
##     <dbl>  <dbl>  <dbl>
##  1 48231. 60935. 60723.
##  2  7207.  7605.  7367.
##  3  5696.  5578.  5531.
##  4 15645. 16779. 18089.
##  5  3537.  5224.  5056.
##  6     0   3350.  2749.
##  7     0    927.  1951.
##  8  1809.  2678.  2984.
##  9  2861.  3424.  4071.
## 10 11305. 12369.  9605.
## 11   170.  3001.  3319.

Mengganti Tabel Tahun

library(dplyr)
sulawesitahun2 <- manipulasioutflow %>% rename('2010' = '2011')
head(sulawesitahun2)
## # 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 Sulampua 36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723. 64828.
## 2 Sulawes~  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.  7437.
## 3 Sulawes~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.  4674.
## 4 Sulawes~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.  5129.
## 6 Sulawes~     0      0      0      0    647.  1514.  2504.  3350.  2749.  2921.
## # ... with 1 more variable: 2021 <dbl>

Mengambil Nilai yang Tidak Duplikasi dari Variabel

Dari Sebuah Variabel

sulawesi4 <- distinct(manipulasioutflow, `2015`)
sulawesi4
## # A tibble: 11 x 1
##    `2015`
##     <dbl>
##  1 53153.
##  2  7202.
##  3  5310.
##  4 16236.
##  5  4716.
##  6   647.
##  7     0 
##  8  2397.
##  9  3123.
## 10 11623.
## 11  1899.

Di Semua Variabel

sulawesi5 <- distinct(manipulasioutflow, `2015`, .keep_all = TRUE)
sulawesi5
## # A tibble: 11 x 12
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723.
##  2 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
##  3 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
##  4 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
##  5 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
##  6 Sulawesi Barat     0      0      0      0    647.  1514.  2504.  3350.  2749.
##  7 Gorontalo          0      0      0      0      0      0      0    927.  1951.
##  8 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.
##  9 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605.
## 11 Papua Barat        0      0      0    170.  1899.  1924.  2621.  3001.  3319.
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menyeleksi Baris pada Tabel

Baris tabel diseleksi dengan menggunakan fungsi filter().

sulawesi6 <- manipulasioutflow %>%
  filter(Provinsi <= 'sulawesi Barat') %>%
    select(`2018`,`2019`)
sulawesi6
## # A tibble: 6 x 2
##   `2018` `2019`
##    <dbl>  <dbl>
## 1 60935. 60723.
## 2   927.  1951.
## 3  2678.  2984.
## 4  3424.  4071.
## 5 12369.  9605.
## 6  3001.  3319.
sulawesi7 <- manipulasioutflow %>%
  filter(Provinsi == 'sulawesi Barat', Provinsi == 'sulawesi Tengah') %>%
    select( -`2020`)
sulawesi7
## # 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 [11 x 12] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:11] "Sulampua" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
##  $ 2011    : num [1:11] 36449 6606 4017 8967 2889 ...
##  $ 2012    : num [1:11] 43623 6375 4458 11873 2950 ...
##  $ 2013    : num [1:11] 64181 22740 4544 11485 4239 ...
##  $ 2014    : num [1:11] 48231 7207 5696 15645 3537 ...
##  $ 2015    : num [1:11] 53153 7202 5310 16236 4716 ...
##  $ 2016    : num [1:11] 53145 7707 4962 15494 4488 ...
##  $ 2017    : num [1:11] 56297 8421 5226 15159 5293 ...
##  $ 2018    : num [1:11] 60935 7605 5578 16779 5224 ...
##  $ 2019    : num [1:11] 60723 7367 5531 18089 5056 ...
##  $ 2020    : num [1:11] 64828 7437 4674 20503 5129 ...
##  $ 2021    : num [1:11] 33806 3050 2763 12017 2507 ...
str(manipulasioutflow %>% group_by(Provinsi))
## grouped_df [11 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:11] "Sulampua" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
##  $ 2011    : num [1:11] 36449 6606 4017 8967 2889 ...
##  $ 2012    : num [1:11] 43623 6375 4458 11873 2950 ...
##  $ 2013    : num [1:11] 64181 22740 4544 11485 4239 ...
##  $ 2014    : num [1:11] 48231 7207 5696 15645 3537 ...
##  $ 2015    : num [1:11] 53153 7202 5310 16236 4716 ...
##  $ 2016    : num [1:11] 53145 7707 4962 15494 4488 ...
##  $ 2017    : num [1:11] 56297 8421 5226 15159 5293 ...
##  $ 2018    : num [1:11] 60935 7605 5578 16779 5224 ...
##  $ 2019    : num [1:11] 60723 7367 5531 18089 5056 ...
##  $ 2020    : num [1:11] 64828 7437 4674 20503 5129 ...
##  $ 2021    : num [1:11] 33806 3050 2763 12017 2507 ...
##  - attr(*, "groups")= tibble [11 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ Provinsi: chr [1:11] "Gorontalo" "Maluku" "Maluku Utara" "Papua" ...
##   ..$ .rows   : list<int> [1:11] 
##   .. ..$ : int 7
##   .. ..$ : int 9
##   .. ..$ : int 8
##   .. ..$ : int 10
##   .. ..$ : int 11
##   .. ..$ : int 1
##   .. ..$ : int 6
##   .. ..$ : int 4
##   .. ..$ : int 3
##   .. ..$ : int 5
##   .. ..$ : int 2
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE

Pengelompokkan dan Pengurutkan Data

Pengelompokkan Data

sulawesiup <- manipulasioutflow %>%
    group_by(Provinsi)
sulawesiup
## # A tibble: 11 x 12
## # Groups:   Provinsi [11]
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723.
##  2 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
##  3 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
##  4 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
##  5 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
##  6 Sulawesi Barat     0      0      0      0    647.  1514.  2504.  3350.  2749.
##  7 Gorontalo          0      0      0      0      0      0      0    927.  1951.
##  8 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.
##  9 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605.
## 11 Papua Barat        0      0      0    170.  1899.  1924.  2621.  3001.  3319.
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Pengurutan data

sulawesiubah <- arrange(manipulasioutflow, `2012`)
sulawesiubah
## # A tibble: 11 x 12
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulawesi Barat     0      0      0      0    647.  1514.  2504.  3350.  2749.
##  2 Gorontalo          0      0      0      0      0      0      0    927.  1951.
##  3 Papua Barat        0      0      0    170.  1899.  1924.  2621.  3001.  3319.
##  4 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.
##  5 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.
##  6 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
##  7 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
##  8 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
##  9 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605.
## 11 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723.
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>

Menambahkan kolom pda tabel

sulawesiup1 <- manipulasioutflow %>%
    mutate(`2021` = manipulasioutflow$`2020`/2)
sulawesiup1
## # A tibble: 11 x 12
##    Provinsi       `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sulampua       36449. 43623. 64181. 48231. 53153. 53145. 56297. 60935. 60723.
##  2 Sulawesi Utara  6606.  6375. 22740.  7207.  7202.  7707.  8421.  7605.  7367.
##  3 Sulawesi Teng~  4017.  4458.  4544.  5696.  5310.  4962.  5226.  5578.  5531.
##  4 Sulawesi Sela~  8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
##  5 Sulawesi Teng~  2889.  2950.  4239.  3537.  4716.  4488.  5293.  5224.  5056.
##  6 Sulawesi Barat     0      0      0      0    647.  1514.  2504.  3350.  2749.
##  7 Gorontalo          0      0      0      0      0      0      0    927.  1951.
##  8 Maluku Utara    1631.  1677.  8578.  1809.  2397.  2246.  2752.  2678.  2984.
##  9 Maluku          2352.  2690.  4795.  2861.  3123.  3309.  3671.  3424.  4071.
## 10 Papua           9986. 13600.  7801. 11305. 11623. 11500. 10650. 12369.  9605.
## 11 Papua Barat        0      0      0    170.  1899.  1924.  2621.  3001.  3319.
## # ... with 2 more variables: 2020 <dbl>, 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()