Universitas : UIN MAULANA MALIK IBRAHIM MALANG
Jurusan : Teknik Informatika
Dalam melakukan manipulasi data di 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
Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi. Cara menginstall package dplyr yaitu sebagai berikut:
install.package(dplyr)
Sedangkan untuk memanggil dplyr yaitu dengan sintaks:
library(dplyr)
Beberapa alasan mengapa dplyr digunakan ketika melakukan manipulasi data yaitu pemrosesannya cepat sehingga meminimalisir waktu, kode yang simpel sehingga mudah dimengerti, dan penggunaan fungsi yang sistematis sehingga kode lebih rapi.
library(readxl)dataoutflowjawa <- read_excel(path = "OutflowTahunJawa.xlsx")
dataoutflowjawa## # A tibble: 7 x 12
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>
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()
jawa2 <- select(dataoutflowjawa,'Provinsi', '2017')
jawa2## # A tibble: 7 x 2
## Provinsi `2017`
## <chr> <dbl>
## 1 Jawa 228905.
## 2 Jawa Barat 53825.
## 3 Jawa Tengah 62761.
## 4 Yogyakarta 16810.
## 5 Jawa Timur 93396.
## 6 Banten 2113.
## 7 DKI Jakarta 181553.
jawa3 <- select(dataoutflowjawa, -'2019')
jawa3## # A tibble: 7 x 11
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.51e5 1.43e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 5.72e4 3.48e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.23e4 4.45e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 1.66e4 9.65e3
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 9.34e4 4.60e4
## 6 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.18e4 8.44e3
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.64e5 9.40e4
jawa4 <- dataoutflowjawa %>% select('Provinsi', '2017', '2018', '2019' , '2020' , '2021')
jawa4## # A tibble: 7 x 6
## Provinsi `2017` `2018` `2019` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 228905. 253125. 271957. 251363. 143340.
## 2 Jawa Barat 53825. 61358. 61692. 57235. 34763.
## 3 Jawa Tengah 62761. 69368. 72363. 72342. 44455.
## 4 Yogyakarta 16810. 20357. 21353. 16619. 9652.
## 5 Jawa Timur 93396. 97995. 105514. 93374. 46029.
## 6 Banten 2113. 4047. 11035. 11793. 8441.
## 7 DKI Jakarta 181553. 187820. 197818. 163779. 94033.
jawa5 <- dataoutflowjawa %>% rename('Tahun 2011' = '2011' , 'Tahun 2012' = '2012' , 'Tahun 2013' = '2013' , 'Tahun 2014' = '2014' , 'Tahun 2015' = '2015' , 'Tahun 2016' = '2016' , 'Tahun 2017' = '2017' , 'Tahun 2018' = '2018' , 'Tahun 2019' = '2019' , 'Tahun 2020' = '2020' , 'Tahun 2021' = '2021')
head(jawa5)## # A tibble: 6 x 12
## Provinsi `Tahun 2011` `Tahun 2012` `Tahun 2013` `Tahun 2014` `Tahun 2015`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 83511. 111363. 98969. 147069. 171568.
## 2 Jawa Barat 20782. 28895. 23067. 40857. 47063.
## 3 Jawa Tengah 19975. 28493. 29529. 39110. 46840.
## 4 Yogyakarta 7538. 9486. 9708. 13171. 14080.
## 5 Jawa Timur 35217. 44489. 36665. 53931. 63585.
## 6 Banten 0 0 0 0 0
## # ... with 6 more variables: `Tahun 2016` <dbl>, `Tahun 2017` <dbl>,
## # `Tahun 2018` <dbl>, `Tahun 2019` <dbl>, `Tahun 2020` <dbl>,
## # `Tahun 2021` <dbl>
jawa6 <- dataoutflowjawa %>%
filter(Provinsi == 'Jawa Barat') %>%
select( 'Provinsi', '2015','2016', '2017','2018', '2019', '2020')
jawa6## # A tibble: 1 x 7
## Provinsi `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa Barat 47063. 49405. 53825. 61358. 61692. 57235.
str(dataoutflowjawa)## tibble [7 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:7] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
## $ 2011 : num [1:7] 83511 20782 19975 7538 35217 ...
## $ 2012 : num [1:7] 111363 28895 28493 9486 44489 ...
## $ 2013 : num [1:7] 98969 23067 29529 9708 36665 ...
## $ 2014 : num [1:7] 147069 40857 39110 13171 53931 ...
## $ 2015 : num [1:7] 171568 47063 46840 14080 63585 ...
## $ 2016 : num [1:7] 190568 49405 53659 13013 74491 ...
## $ 2017 : num [1:7] 228905 53825 62761 16810 93396 ...
## $ 2018 : num [1:7] 253125 61358 69368 20357 97995 ...
## $ 2019 : num [1:7] 271957 61692 72363 21353 105514 ...
## $ 2020 : num [1:7] 251363 57235 72342 16619 93374 ...
## $ 2021 : num [1:7] 143340 34763 44455 9652 46029 ...
str(dataoutflowjawa %>% group_by(Provinsi))## grouped_df [7 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:7] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
## $ 2011 : num [1:7] 83511 20782 19975 7538 35217 ...
## $ 2012 : num [1:7] 111363 28895 28493 9486 44489 ...
## $ 2013 : num [1:7] 98969 23067 29529 9708 36665 ...
## $ 2014 : num [1:7] 147069 40857 39110 13171 53931 ...
## $ 2015 : num [1:7] 171568 47063 46840 14080 63585 ...
## $ 2016 : num [1:7] 190568 49405 53659 13013 74491 ...
## $ 2017 : num [1:7] 228905 53825 62761 16810 93396 ...
## $ 2018 : num [1:7] 253125 61358 69368 20357 97995 ...
## $ 2019 : num [1:7] 271957 61692 72363 21353 105514 ...
## $ 2020 : num [1:7] 251363 57235 72342 16619 93374 ...
## $ 2021 : num [1:7] 143340 34763 44455 9652 46029 ...
## - attr(*, "groups")= tibble [7 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:7] "Banten" "DKI Jakarta" "Jawa" "Jawa Barat" ...
## ..$ .rows : list<int> [1:7]
## .. ..$ : int 6
## .. ..$ : int 7
## .. ..$ : int 1
## .. ..$ : int 2
## .. ..$ : int 3
## .. ..$ : int 5
## .. ..$ : int 4
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
jawa7 <- dataoutflowjawa %>%
group_by(Provinsi)
jawa7## # A tibble: 7 x 12
## # Groups: Provinsi [7]
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>
jawa8 <- arrange (dataoutflowjawa, `2011`)
jawa8## # A tibble: 7 x 12
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.10e4 1.18e4
## 2 Yogyaka~ 7.54e3 9.49e3 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 3 Jawa Te~ 2.00e4 2.85e4 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Jawa Ba~ 2.08e4 2.89e4 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 5 Jawa Ti~ 3.52e4 4.45e4 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Jawa 8.35e4 1.11e5 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 7 DKI Jak~ 1.02e5 1.36e5 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>
jawa9 <- dataoutflowjawa %>%
mutate(`2012` = dataoutflowjawa$`2013`/2)
jawa9## # A tibble: 7 x 12
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 8.35e4 49485. 9.90e4 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 2.08e4 11533. 2.31e4 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 2.00e4 14765. 2.95e4 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7.54e3 4854. 9.71e3 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 3.52e4 18333. 3.67e4 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.10e4 1.18e4
## 7 DKI Jak~ 1.02e5 74620. 1.49e5 1.52e5 1.64e5 1.71e5 1.82e5 1.88e5 1.98e5 1.64e5
## # ... with 1 more variable: `2021` <dbl>
ggplot(data = dataoutflowjawa, mapping = aes(x = Provinsi, y = `2021`)) +
geom_bar(stat = "identity")