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.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
manipulasioutflow <- read_excel(path = "outflow tahunan.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 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## 2 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 3 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 4 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 5 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 7 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 8 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 9 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... 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()
sumatera2011 <- select(manipulasioutflow, '2011')
sumatera2011
## # A tibble: 11 x 1
## `2011`
## <dbl>
## 1 80092.
## 2 6338.
## 3 22176.
## 4 5300.
## 5 12434.
## 6 5819.
## 7 5217.
## 8 14524.
## 9 2561.
## 10 5724.
## 11 0
sumatera2 <- select(manipulasioutflow, `2012`, `2014`, `2016`, `2018`, `2020`)
sumatera2
## # A tibble: 11 x 5
## `2012` `2014` `2016` `2018` `2020`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 85235. 102338. 121992. 135676. 140589.
## 2 6378. 8630. 11311. 11450. 12874.
## 3 22495. 26391. 31959. 36908. 39758.
## 4 6434. 7060. 9198. 8447. 8763.
## 5 13014. 15158. 17645. 17926. 19139.
## 6 6966. 10122. 10068. 12597. 8461.
## 7 5013. 8361. 7774. 8459. 8950.
## 8 15600. 13372. 15756. 17931. 18309.
## 9 2959. 4583. 5163. 5495. 6564.
## 10 6376. 8339. 10436. 13725. 13873.
## 11 0 322. 2684. 2738. 3899.
sumateramin2011 <- select(manipulasioutflow, -'2017')
sumateramin2011
## # 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 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.36e5 1.53e5 1.41e5
## 2 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.14e4 1.31e4 1.29e4
## 3 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.69e4 4.41e4 3.98e4
## 4 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 8.45e3 9.46e3 8.76e3
## 5 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.79e4 1.93e4 1.91e4
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.26e4 1.26e4 8.46e3
## 7 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.46e3 9.20e3 8.95e3
## 8 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.79e4 1.91e4 1.83e4
## 9 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.50e3 6.84e3 6.56e3
## 10 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.37e4 1.56e4 1.39e4
## 11 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.74e3 4.17e3 3.90e3
## # ... 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 :
sumateramin1 <- manipulasioutflow %>%
select(tahun = `2014`, `2018`, `2019`)
sumateramin1
## # A tibble: 11 x 3
## tahun `2018` `2019`
## <dbl> <dbl> <dbl>
## 1 102338. 135676. 153484.
## 2 8630. 11450. 13087.
## 3 26391. 36908. 44051.
## 4 7060. 8447. 9465.
## 5 15158. 17926. 19277.
## 6 10122. 12597. 12644.
## 7 8361. 8459. 9204.
## 8 13372. 17931. 19121.
## 9 4583. 5495. 6842.
## 10 8339. 13725. 15626.
## 11 322. 2738. 4167.
library(dplyr)
sumateratahun2 <- manipulasioutflow %>% rename('2010' = '2011')
head(sumateratahun2)
## # 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 Sumatera 80092. 85235. 1.03e5 1.02e5 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Aceh 6338. 6378. 2.33e4 8.63e3 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4 1.29e4
## 3 Sumater~ 22176. 22495. 1.92e4 2.64e4 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 4 Sumater~ 5300. 6434. 6.51e3 7.06e3 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 5 Riau 12434. 13014. 1.55e4 1.52e4 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4 1.91e4
## 6 Kep. Ri~ 5819. 6966. 8.75e3 1.01e4 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4 8.46e3
## # ... with 1 more variable: 2021 <dbl>
sumatera4 <- distinct(manipulasioutflow, `2015`)
sumatera4
## # A tibble: 11 x 1
## `2015`
## <dbl>
## 1 109186.
## 2 9637.
## 3 27877.
## 4 7471.
## 5 15789.
## 6 9803.
## 7 8325.
## 8 13484.
## 9 4852.
## 10 9946.
## 11 2005.
sumatera5 <- distinct(manipulasioutflow, `2015`, .keep_all = TRUE)
sumatera5
## # 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 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## 2 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 3 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 4 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 5 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 7 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 8 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 9 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
Baris tabel diseleksi dengan menggunakan fungsi filter().
sumatera6 <- manipulasioutflow %>%
filter(Provinsi <= 'sumatera Barat') %>%
select(`2018`,`2019`)
sumatera6
## # A tibble: 8 x 2
## `2018` `2019`
## <dbl> <dbl>
## 1 135676. 153484.
## 2 11450. 13087.
## 3 17926. 19277.
## 4 12597. 12644.
## 5 8459. 9204.
## 6 5495. 6842.
## 7 13725. 15626.
## 8 2738. 4167.
sumatera7 <- manipulasioutflow %>%
filter(Provinsi == 'sumatera Barat', Provinsi == 'sumatera Tengah') %>%
select( -`2020`)
sumatera7
## # 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] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
## $ 2011 : num [1:11] 80092 6338 22176 5300 12434 ...
## $ 2012 : num [1:11] 85235 6378 22495 6434 13014 ...
## $ 2013 : num [1:11] 103288 23278 19235 6511 15460 ...
## $ 2014 : num [1:11] 102338 8630 26391 7060 15158 ...
## $ 2015 : num [1:11] 109186 9637 27877 7471 15789 ...
## $ 2016 : num [1:11] 121992 11311 31959 9198 17645 ...
## $ 2017 : num [1:11] 133606 11760 35243 10754 18128 ...
## $ 2018 : num [1:11] 135676 11450 36908 8447 17926 ...
## $ 2019 : num [1:11] 153484 13087 44051 9465 19277 ...
## $ 2020 : num [1:11] 140589 12874 39758 8763 19139 ...
## $ 2021 : num [1:11] 86627 5770 23453 5941 12631 ...
str(manipulasioutflow %>% group_by(Provinsi))
## grouped_df [11 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:11] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
## $ 2011 : num [1:11] 80092 6338 22176 5300 12434 ...
## $ 2012 : num [1:11] 85235 6378 22495 6434 13014 ...
## $ 2013 : num [1:11] 103288 23278 19235 6511 15460 ...
## $ 2014 : num [1:11] 102338 8630 26391 7060 15158 ...
## $ 2015 : num [1:11] 109186 9637 27877 7471 15789 ...
## $ 2016 : num [1:11] 121992 11311 31959 9198 17645 ...
## $ 2017 : num [1:11] 133606 11760 35243 10754 18128 ...
## $ 2018 : num [1:11] 135676 11450 36908 8447 17926 ...
## $ 2019 : num [1:11] 153484 13087 44051 9465 19277 ...
## $ 2020 : num [1:11] 140589 12874 39758 8763 19139 ...
## $ 2021 : num [1:11] 86627 5770 23453 5941 12631 ...
## - attr(*, "groups")= tibble [11 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:11] "Aceh" "Bengkulu" "Jambi" "Kep. Bangka Bellitung" ...
## ..$ .rows : list<int> [1:11]
## .. ..$ : int 2
## .. ..$ : int 9
## .. ..$ : int 7
## .. ..$ : int 11
## .. ..$ : int 6
## .. ..$ : int 10
## .. ..$ : int 5
## .. ..$ : int 1
## .. ..$ : int 4
## .. ..$ : int 8
## .. ..$ : int 3
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
sumateraup <- manipulasioutflow %>%
group_by(Provinsi)
sumateraup
## # 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 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## 2 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 3 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 4 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 5 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 7 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 8 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 9 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
sumateraubah <- arrange(manipulasioutflow, `2012`)
sumateraubah
## # 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 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## 2 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 3 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 4 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 5 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 6 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 7 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 8 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 9 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 10 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 11 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
sumateraup1 <- manipulasioutflow %>%
mutate(`2021` = manipulasioutflow$`2020`/2)
sumateraup1
## # 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 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## 2 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 3 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 4 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 5 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 7 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 8 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 9 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 10 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 11 Kep. Bangka~ 0 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
ggplot(data = manipulasioutflow, mapping = aes(x = Provinsi, y = `2011`)) +
geom_point()
ggplot(data = manipulasioutflow, mapping = aes(x = Provinsi, y = `2012`)) +
geom_point()