Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data outflow uang kartal di pulau Suamtera. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.
Manipulasi data merupakan proses pengolahan data yang mana data tersebut direkayasa untuk menghilangkan kebenaran identitas dari data tersebut. Manipulasi data juga bisa digunakan dengan tujuan untuk mengubah data agar lebih mudah untuk dibaca.
Pada bahasa pemrograman R, manipulasi data dilakukan menggunakan package dplyr di RSudio. Package ini ditemukan oleh Hadley Wickham dan Roman Francois. Ada beberapa fungsi yang didapat setelah kita menginstall package dplyr, yaitu diantaranya :
Select() : untuk menggunakan beberapa variabel tertentu dari data yang dimiliki
Mutate() : untuk membuat variabel baru
Filter() : untuk memfilter nilai yang ada dalam variabel
Summarise() : untuk meringkas nilai data yang sama menjadi satu nilai tertentu
Arrange() : untuk mengurutkan data
Group_by() : untuk mengelompokkan data
Berikut cara untuk menginstall package dplyr :
install.package(dplyr)
Untuk memanggil package dplyr maka menggunakan sintaks :
library(dplyr)
Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data outflow uang kartal di pulau Sumatera. Kemudian data tersebut akan divisualisasikan dalam bentuk grafik menggunakan tabel ggplot.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
dataoutflow <- read_excel(path = "C:/Users/User/Documents/SEMESTER 2/LINEAR ALGEBRA/pivot outflow sumatera.xlsx")
dataoutflow
## # 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)
## -- 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.7
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 2.0.1 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
sum2011 <- select(dataoutflow, '2011')
sum2011
## # 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
sum2 <- select(dataoutflow, `2013`, `2014`, `2015`, `2019`, `2021`)
sum2
## # A tibble: 11 x 5
## `2013` `2014` `2015` `2019` `2021`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 103288. 102338. 109186. 153484. 86627.
## 2 23278. 8630. 9637. 13087. 5770.
## 3 19235. 26391. 27877. 44051. 23453.
## 4 6511. 7060. 7471. 9465. 5941.
## 5 15460. 15158. 15789. 19277. 12631.
## 6 8747. 10122. 9803. 12644. 5128.
## 7 6302. 8361. 8325. 9204. 6046.
## 8 12693. 13372. 13484. 19121. 11436.
## 9 6490. 4583. 4852. 6842. 4681.
## 10 4571. 8339. 9946. 15626. 8050.
## 11 0 322. 2005. 4167. 3493.
Sintaks diatas digunakan untuk memanggil beberapa variabel dan tidak mengikutsertakan beberapa variabel lainnya. Seperti tahun 2011, 2012, 2016, 2017, 2018, dan 2020 yang tidak termasuk dalam pemanggilan.
Apabila variabel yang ingin dihilangkan dalam pemanggilan hanya satu, maka kita dapat menggunakan fungsi select() kemudian memberikan tanda minus (-) pada variabel yang ingin dihapus. Berikut adalah contoh sintaksnya :
library(tidyverse)
sumnon2011 <- select(dataoutflow, -'2011')
sumnon2011
## # A tibble: 11 x 11
## Provinsi `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sumatera 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5 1.41e5
## 2 Aceh 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4 1.29e4
## 3 Sumatera Ut~ 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4 3.98e4
## 4 Sumatera Ba~ 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3 8.76e3
## 5 Riau 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4 1.91e4
## 6 Kep. Riau 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4 8.46e3
## 7 Jambi 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3 8.95e3
## 8 Sumatera Se~ 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4 1.83e4
## 9 Bengkulu 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3 6.56e3
## 10 Lampung 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4 1.39e4
## 11 Kep. Bangka~ 0 0 322. 2.00e3 2.68e3 2.75e3 2.74e3 4.17e3 3.90e3
## # ... with 1 more variable: 2021 <dbl>
Selain untuk memanggil suatu variabel, fungsi select() juga dapat digunakan untuk mengganti nama variabel.
sum3 <- dataoutflow %>%
select(tahun = `2014`, `2018`, `2019`)
sum3
## # 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)
sum4 <- dataoutflow %>% rename('2010' = '2011')
head(sum4)
## # 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>
sum5 <- distinct(dataoutflow, `2017`)
sum5
## # A tibble: 11 x 1
## `2017`
## <dbl>
## 1 133606.
## 2 11760.
## 3 35243.
## 4 10754.
## 5 18128.
## 6 10749.
## 7 8434.
## 8 16981.
## 9 5447.
## 10 13359.
## 11 2750.
Untuk mengambil nilai dari semua baris pada suatu variabel, maka kita menambahkan .keep_all = TRUE
sum6 <- distinct(dataoutflow, `2017`, .keep_all = TRUE)
sum6
## # 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>
sum7 <- dataoutflow %>%
filter(Provinsi <= 'Sumatera') %>%
select(`2015`,`2016`)
sum7
## # A tibble: 8 x 2
## `2015` `2016`
## <dbl> <dbl>
## 1 109186. 121992.
## 2 9637. 11311.
## 3 15789. 17645.
## 4 9803. 10068.
## 5 8325. 7774.
## 6 4852. 5163.
## 7 9946. 10436.
## 8 2005. 2684.
sum8 <- dataoutflow %>%
filter(Provinsi == 'Sumatera', Provinsi == 'Sumatera Utara') %>%
select( -`2016`)
sum8
## # 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(dataoutflow)
## 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(dataoutflow %>% 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
sumup <- dataoutflow %>%
group_by(Provinsi)
sumup
## # 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>
sumubah <- arrange(dataoutflow, `2013`)
sumubah
## # 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 Lampung 5724. 6376. 4571. 8339. 9.95e3 1.04e4 1.34e4 1.37e4 1.56e4
## 3 Jambi 5217. 5013. 6302. 8361. 8.32e3 7.77e3 8.43e3 8.46e3 9.20e3
## 4 Bengkulu 2561. 2959. 6490. 4583. 4.85e3 5.16e3 5.45e3 5.50e3 6.84e3
## 5 Sumatera Ba~ 5300. 6434. 6511. 7060. 7.47e3 9.20e3 1.08e4 8.45e3 9.46e3
## 6 Kep. Riau 5819. 6966. 8747. 10122. 9.80e3 1.01e4 1.07e4 1.26e4 1.26e4
## 7 Sumatera Se~ 14524. 15600. 12693. 13372. 1.35e4 1.58e4 1.70e4 1.79e4 1.91e4
## 8 Riau 12434. 13014. 15460. 15158. 1.58e4 1.76e4 1.81e4 1.79e4 1.93e4
## 9 Sumatera Ut~ 22176. 22495. 19235. 26391. 2.79e4 3.20e4 3.52e4 3.69e4 4.41e4
## 10 Aceh 6338. 6378. 23278. 8630. 9.64e3 1.13e4 1.18e4 1.14e4 1.31e4
## 11 Sumatera 80092. 85235. 103288. 102338. 1.09e5 1.22e5 1.34e5 1.36e5 1.53e5
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
sumup1 <- dataoutflow %>%
mutate(`2021` = dataoutflow$`2020`/2)
sumup1
## # 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 = dataoutflow, mapping = aes(Provinsi, `2011`, color = Provinsi)) +
geom_point()
Sumber :
https://rpubs.com/suhartono-uinmaliki/868598
https://www.bi.go.id/id/statistik/ekonomi-keuangan/ssp/indikator-pengedaran-uang.aspx
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00