Pada halaman ini, kita akan belajar memanipulasi data dengan menggunakan beberapa fungsi dari package dplyr. Data yang akan digunakan pada manipulasi ini yaitu data inflow 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 inflow 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
datainflow <- read_excel(path = "C:/Users/User/Documents/SEMESTER 2/LINEAR ALGEBRA/pivot inflow sumatera.xlsx")
datainflow
## # 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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5
## 2 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3
## 3 Sumatera Uta~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4
## 4 Sumatera Bar~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4
## 5 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4
## 6 Kep. Riau 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3
## 7 Jambi 1868. 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3
## 8 Sumatera Sel~ 7820. 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4
## 9 Bengkulu 1153. 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung 7690. 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~ 0 0 0 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3
## # ... 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(datainflow, '2011')
sum2011
## # A tibble: 11 x 1
## `2011`
## <dbl>
## 1 57900.
## 2 2308.
## 3 23238.
## 4 9385.
## 5 3012.
## 6 1426.
## 7 1868.
## 8 7820.
## 9 1153.
## 10 7690.
## 11 0
sum2 <- select(datainflow, `2013`, `2014`, `2015`, `2019`, `2021`)
sum2
## # A tibble: 11 x 5
## `2013` `2014` `2015` `2019` `2021`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 98369. 86024. 86549. 133762. 89270.
## 2 36337. 4567. 4710. 7509. 3702.
## 3 18120. 30503. 30254. 47112. 31840.
## 4 14056. 14103. 13309. 14750. 10748.
## 5 8933. 6358. 7156. 10915. 7769.
## 6 3378. 2563. 3218. 6077. 5009.
## 7 3047. 5169. 4978. 6486. 4980.
## 8 8647. 10038. 10797. 14812. 9106.
## 9 2378. 3262. 2791. 5789. 4160.
## 10 3474. 9448. 8160. 17046. 10697.
## 11 0 13.7 1177. 3265. 1259.
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(datainflow, -'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 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Aceh 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3 6.64e3
## 3 Sumatera Uta~ 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 4 Sumatera Bar~ 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 5 Riau 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4 9.15e3
## 6 Kep. Riau 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3 6.18e3
## 7 Jambi 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3 5.63e3
## 8 Sumatera Sel~ 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4 1.18e4
## 9 Bengkulu 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3 4.97e3
## 10 Lampung 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4 1.52e4
## 11 Kep. Bangka ~ 0 0 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3 2.56e3
## # ... with 1 more variable: 2021 <dbl>
Selain untuk memanggil suatu variabel, fungsi select() juga dapat digunakan untuk mengganti nama variabel.
sum3 <- datainflow %>%
select(tahun = `2014`, `2018`, `2019`)
sum3
## # A tibble: 11 x 3
## tahun `2018` `2019`
## <dbl> <dbl> <dbl>
## 1 86024. 117495. 133762.
## 2 4567. 5799. 7509.
## 3 30503. 41769. 47112.
## 4 14103. 15058. 14750.
## 5 6358. 10730. 10915.
## 6 2563. 5134. 6077.
## 7 5169. 5657. 6486.
## 8 10038. 14267. 14812.
## 9 3262. 4150. 5789.
## 10 9448. 13415. 17046.
## 11 13.7 1517. 3265.
library(dplyr)
sum4 <- datainflow %>% 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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5 1.09e5
## 2 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3 6.64e3
## 3 Sumater~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4 3.66e4
## 4 Sumater~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4 1.07e4
## 5 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4 9.15e3
## 6 Kep. Ri~ 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3 6.18e3
## # ... with 1 more variable: 2021 <dbl>
sum5 <- distinct(datainflow, `2017`)
sum5
## # A tibble: 11 x 1
## `2017`
## <dbl>
## 1 103748.
## 2 5514.
## 3 35617.
## 4 15312.
## 5 8553.
## 6 4412.
## 7 4404.
## 8 13075.
## 9 3620.
## 10 12078.
## 11 1164.
Untuk mengambil nilai dari semua baris pada suatu variabel, maka kita menambahkan .keep_all = TRUE
sum6 <- distinct(datainflow, `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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5
## 2 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3
## 3 Sumatera Uta~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4
## 4 Sumatera Bar~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4
## 5 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4
## 6 Kep. Riau 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3
## 7 Jambi 1868. 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3
## 8 Sumatera Sel~ 7820. 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4
## 9 Bengkulu 1153. 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung 7690. 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~ 0 0 0 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
Untuk menyeleksi baris berdasarkan nilainya, maka digunakan fungsi filter()
sum7 <- datainflow %>%
filter(Provinsi <= 'Jawa') %>%
select(`2015`,`2016`)
sum7
## # A tibble: 3 x 2
## `2015` `2016`
## <dbl> <dbl>
## 1 4710. 5775.
## 2 4978. 4398.
## 3 2791. 2889.
sum8 <- datainflow %>%
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(datainflow)
## tibble [11 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:11] "Sumatera" "Aceh" "Sumatera Utara" "Sumatera Barat" ...
## $ 2011 : num [1:11] 57900 2308 23238 9385 3012 ...
## $ 2012 : num [1:11] 65911 2620 25981 11192 4447 ...
## $ 2013 : num [1:11] 98369 36337 18120 14056 8933 ...
## $ 2014 : num [1:11] 86024 4567 30503 14103 6358 ...
## $ 2015 : num [1:11] 86549 4710 30254 13309 7156 ...
## $ 2016 : num [1:11] 97764 5775 34427 14078 8211 ...
## $ 2017 : num [1:11] 103748 5514 35617 15312 8553 ...
## $ 2018 : num [1:11] 117495 5799 41769 15058 10730 ...
## $ 2019 : num [1:11] 133762 7509 47112 14750 10915 ...
## $ 2020 : num [1:11] 109345 6641 36609 10696 9148 ...
## $ 2021 : num [1:11] 89270 3702 31840 10748 7769 ...
str(datainflow %>% 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] 57900 2308 23238 9385 3012 ...
## $ 2012 : num [1:11] 65911 2620 25981 11192 4447 ...
## $ 2013 : num [1:11] 98369 36337 18120 14056 8933 ...
## $ 2014 : num [1:11] 86024 4567 30503 14103 6358 ...
## $ 2015 : num [1:11] 86549 4710 30254 13309 7156 ...
## $ 2016 : num [1:11] 97764 5775 34427 14078 8211 ...
## $ 2017 : num [1:11] 103748 5514 35617 15312 8553 ...
## $ 2018 : num [1:11] 117495 5799 41769 15058 10730 ...
## $ 2019 : num [1:11] 133762 7509 47112 14750 10915 ...
## $ 2020 : num [1:11] 109345 6641 36609 10696 9148 ...
## $ 2021 : num [1:11] 89270 3702 31840 10748 7769 ...
## - 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 <- datainflow %>%
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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5
## 2 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3
## 3 Sumatera Uta~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4
## 4 Sumatera Bar~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4
## 5 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4
## 6 Kep. Riau 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3
## 7 Jambi 1868. 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3
## 8 Sumatera Sel~ 7820. 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4
## 9 Bengkulu 1153. 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung 7690. 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~ 0 0 0 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
sumubah <- arrange(datainflow, `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 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3
## 2 Bengkulu 1153. 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3
## 3 Jambi 1868. 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3
## 4 Kep. Riau 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3
## 5 Lampung 7690. 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4
## 6 Sumatera Sel~ 7820. 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4
## 7 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4
## 8 Sumatera Bar~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4
## 9 Sumatera Uta~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4
## 10 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3
## 11 Sumatera 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
sumup1 <- datainflow %>%
mutate(`2021` = datainflow$`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 57900. 65911. 98369. 86024. 86549. 97764. 1.04e5 1.17e5 1.34e5
## 2 Aceh 2308. 2620. 36337. 4567. 4710. 5775. 5.51e3 5.80e3 7.51e3
## 3 Sumatera Uta~ 23238. 25981. 18120. 30503. 30254. 34427. 3.56e4 4.18e4 4.71e4
## 4 Sumatera Bar~ 9385. 11192. 14056. 14103. 13309. 14078. 1.53e4 1.51e4 1.47e4
## 5 Riau 3012. 4447. 8933. 6358. 7156. 8211. 8.55e3 1.07e4 1.09e4
## 6 Kep. Riau 1426. 2236. 3378. 2563. 3218. 4317. 4.41e3 5.13e3 6.08e3
## 7 Jambi 1868. 2138. 3047. 5169. 4978. 4398. 4.40e3 5.66e3 6.49e3
## 8 Sumatera Sel~ 7820. 9126. 8647. 10038. 10797. 12752. 1.31e4 1.43e4 1.48e4
## 9 Bengkulu 1153. 1201. 2378. 3262. 2791. 2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung 7690. 6969. 3474. 9448. 8160. 9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka ~ 0 0 0 13.7 1177. 1544. 1.16e3 1.52e3 3.27e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
ggplot(data = datainflow, 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