Jurusan: Teknik Informatika
Lembaga: Universitas Islam Negeri Maulana Malik Ibrahim Malang
Dalam melakukan manipulasi data di R dapat menggunakan package
dplyr. Package ini berfungsi untuk memudahkan manipulasi
data seperti mengambil sampel secara acak dari tabel, mengurutkan data,
menyaring data, atau bisa juga untuk mengelompokkan data.
Package dplyr ini digunakan ketika melakukan manipulasi
data dengan pemrosesan yang cepat sehingga meminimalisir waktu, kodenya
juga simpel sehingga mudah dimengerti, dan penggunaan fungsi yang
sistematis sehingga kode lebih rapi. Cara menginstall package
dplyr yaitu dengan :
install.package(dplyr)
Dan sintaks untuk memanggil dplyr yaitu dengan :
library(dplyr)
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowjawa <- read_excel(path = "C:/Users/Daffa/Downloads/kuliah/Semester 2/Linear Algebra/Menjelang UAS/Manipulasiinflow-outflow/OutflowJawa.xlsx")
outflowjawa
## # A tibble: 6 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 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 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.1.3 v stringr 1.4.0
## v readr 2.0.1 v forcats 0.5.1
## Warning: package 'dplyr' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
jawa1 <- select(outflowjawa, `2016`)
jawa1
## # A tibble: 6 x 1
## `2016`
## <dbl>
## 1 190568.
## 2 49405.
## 3 53659.
## 4 13013.
## 5 74491.
## 6 0
jawa2 <- select(outflowjawa, `2011`, `2013`, `2015`, `2017`, `2019`)
jawa2
## # A tibble: 6 x 5
## `2011` `2013` `2015` `2017` `2019`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 83511. 98969. 171568. 228905. 271957.
## 2 20782. 23067. 47063. 53825. 61692.
## 3 19975. 29529. 46840. 62761. 72363.
## 4 7538. 9708. 14080. 16810. 21353.
## 5 35217. 36665. 63585. 93396. 105514.
## 6 0 0 0 2113. 11035.
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
jawa3 <- select(outflowjawa, -`2020`)
jawa3
## # A tibble: 6 x 11
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 1.43e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 3.48e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 4.45e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 9.65e3
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 4.60e4
## 6 Banten 0 0 0 0 0 0 2.11e3 4.05e3 1.10e4 8.44e3
Sintaksnya ini menggunakan fungsi select, dan select ini bukan hanya untuk memilih kolom dalam jumlah banyak, melainkan juga bisa untuk mengganti nama kolomnya. Perhatikan sintaks yang ada dibawah ini :
jawaa <- outflowjawa %>%
select(tahun = `2014`, `2020`, `2021`)
jawaa
## # A tibble: 6 x 3
## tahun `2020` `2021`
## <dbl> <dbl> <dbl>
## 1 147069. 251363. 143340.
## 2 40857. 57235. 34763.
## 3 39110. 72342. 44455.
## 4 13171. 16619. 9652.
## 5 53931. 93374. 46029.
## 6 0 11793. 8441.
library(dplyr)
jawatahun <- outflowjawa %>% rename('2010' = '2011')
head(jawatahun)
## # 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 Jawa 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>
jawa4 <- distinct(outflowjawa, `2016`)
jawa4
## # A tibble: 6 x 1
## `2016`
## <dbl>
## 1 190568.
## 2 49405.
## 3 53659.
## 4 13013.
## 5 74491.
## 6 0
jawa5 <- distinct(outflowjawa, `2016`, .keep_all = TRUE)
jawa5
## # A tibble: 6 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 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>
Baris tabel diseleksi dengan menggunakan fungsi
filter(). dalam fungsi ini terdapat berbagai operator,
seperti <, <=, >,
>, ==, dan %in%. Argumen dari
fungsi ini juga bisa lebih dari satu, dan sintaksnya menggunakan
operator boolean.
jawa6 <- outflowjawa %>%
filter(Provinsi <= 'Jawa') %>%
select(`2018`,`2019`)
jawa6
## # A tibble: 2 x 2
## `2018` `2019`
## <dbl> <dbl>
## 1 253125. 271957.
## 2 4047. 11035.
jawa7 <- outflowjawa %>%
filter(Provinsi == 'Jawa', Provinsi == 'Jawa Tengah') %>%
select( -`2021`)
jawa7
## # 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>,
## # 2020 <dbl>
str(outflowjawa)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
## $ 2011 : num [1:6] 83511 20782 19975 7538 35217 ...
## $ 2012 : num [1:6] 111363 28895 28493 9486 44489 ...
## $ 2013 : num [1:6] 98969 23067 29529 9708 36665 ...
## $ 2014 : num [1:6] 147069 40857 39110 13171 53931 ...
## $ 2015 : num [1:6] 171568 47063 46840 14080 63585 ...
## $ 2016 : num [1:6] 190568 49405 53659 13013 74491 ...
## $ 2017 : num [1:6] 228905 53825 62761 16810 93396 ...
## $ 2018 : num [1:6] 253125 61358 69368 20357 97995 ...
## $ 2019 : num [1:6] 271957 61692 72363 21353 105514 ...
## $ 2020 : num [1:6] 251363 57235 72342 16619 93374 ...
## $ 2021 : num [1:6] 143340 34763 44455 9652 46029 ...
str(outflowjawa %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Jawa" "Jawa Barat" "Jawa Tengah" "Yogyakarta" ...
## $ 2011 : num [1:6] 83511 20782 19975 7538 35217 ...
## $ 2012 : num [1:6] 111363 28895 28493 9486 44489 ...
## $ 2013 : num [1:6] 98969 23067 29529 9708 36665 ...
## $ 2014 : num [1:6] 147069 40857 39110 13171 53931 ...
## $ 2015 : num [1:6] 171568 47063 46840 14080 63585 ...
## $ 2016 : num [1:6] 190568 49405 53659 13013 74491 ...
## $ 2017 : num [1:6] 228905 53825 62761 16810 93396 ...
## $ 2018 : num [1:6] 253125 61358 69368 20357 97995 ...
## $ 2019 : num [1:6] 271957 61692 72363 21353 105514 ...
## $ 2020 : num [1:6] 251363 57235 72342 16619 93374 ...
## $ 2021 : num [1:6] 143340 34763 44455 9652 46029 ...
## - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:6] "Banten" "Jawa" "Jawa Barat" "Jawa Tengah" ...
## ..$ .rows : list<int> [1:6]
## .. ..$ : int 6
## .. ..$ : int 1
## .. ..$ : int 2
## .. ..$ : int 3
## .. ..$ : int 5
## .. ..$ : int 4
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
jawaup <- outflowjawa %>%
group_by(Provinsi)
jawaup
## # A tibble: 6 x 12
## # Groups: Provinsi [6]
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 1 more variable: 2021 <dbl>
jawaubah <- arrange(outflowjawa, `2019`)
jawaubah
## # A tibble: 6 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~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 3 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 4 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 5.39e4 6.36e4 7.45e4 9.34e4 9.80e4 1.06e5 9.34e4
## 6 Jawa 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## # ... with 1 more variable: 2021 <dbl>
jawaup1 <- outflowjawa %>%
mutate(`2022` = outflowjawa$`2021`/2)
jawaup1
## # A tibble: 6 x 13
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 83511. 1.11e5 98969. 1.47e5 1.72e5 1.91e5 2.29e5 2.53e5 2.72e5 2.51e5
## 2 Jawa Ba~ 20782. 2.89e4 23067. 4.09e4 4.71e4 4.94e4 5.38e4 6.14e4 6.17e4 5.72e4
## 3 Jawa Te~ 19975. 2.85e4 29529. 3.91e4 4.68e4 5.37e4 6.28e4 6.94e4 7.24e4 7.23e4
## 4 Yogyaka~ 7538. 9.49e3 9708. 1.32e4 1.41e4 1.30e4 1.68e4 2.04e4 2.14e4 1.66e4
## 5 Jawa Ti~ 35217. 4.45e4 36665. 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
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>
ggplot(data = outflowjawa, mapping = aes(x = Provinsi, y = `2020`)) +
geom_point()
ggplot(data = outflowjawa, mapping = aes(x = Provinsi, y = `2018`)) +
geom_point()
ggplot(data = outflowjawa, mapping = aes(x = Provinsi, y = `2020`)) +
geom_bar(stat = "identity")
ggplot(data = outflowjawa, mapping = aes(x = Provinsi, y = `2018`)) +
geom_bar(stat = "identity")