Dosen Pengempu : Prof. Dr. Suhartono, M.Kom
UIN Maulana Malik Ibrahim Malang - Teknik Informatika
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
inflowsul <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/InflowSulawesi.xlsx")
inflowsul
## # 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 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 2 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 3 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 6 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## # ... 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()
sul1 <- select(inflowsul, `2021`)
sul1
## # A tibble: 6 x 1
## `2021`
## <dbl>
## 1 5798
## 2 4671.
## 3 2453.
## 4 18335.
## 5 3270.
## 6 265.
sul2 <- select(inflowsul, `2020`, `2018`, `2016`, `2014`, `2012`)
sul2
## # A tibble: 6 x 5
## `2020` `2018` `2016` `2014` `2012`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 6921 7522 7002 6402 4637
## 2 6324. 7781. 7266. 7374. 6635.
## 3 3052. 3701. 2665. 3000. 1885.
## 4 21551. 21894. 21043. 19384. 13702.
## 5 3353. 3632. 3491. 2256. 964.
## 6 329. 606. 536. 0 0
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
sul3 <- select(inflowsul, -`2014`)
sul3
## # A tibble: 6 x 11
## Provinsi `2011` `2012` `2013` `2015` `2016` `2017` `2018` `2019` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi 3697 4637 9405 6.18e3 7002 6603 7522 8306 6921 5798
## 2 Sulawes~ 5671. 6635. 21646. 6.29e3 7266. 7044. 7781. 7809. 6324. 4671.
## 3 Sulawes~ 1563. 1885. 1520. 2.59e3 2665. 2806. 3701. 4042. 3052. 2453.
## 4 Sulawes~ 10593. 13702. 17770. 1.96e4 21043. 18803. 21894. 24749. 21551. 18335.
## 5 Sulawes~ 659. 964. 6093. 2.38e3 3491. 3618. 3632. 4390. 3353. 3270.
## 6 Sulawes~ 0 0 0 4.92e1 536. 746. 606. 542. 329. 265.
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 :
sul4 <- inflowsul %>%
select(tahun = `2014`, `2017`, `2018`)
sul4
## # A tibble: 6 x 3
## tahun `2017` `2018`
## <dbl> <dbl> <dbl>
## 1 6402 6603 7522
## 2 7374. 7044. 7781.
## 3 3000. 2806. 3701.
## 4 19384. 18803. 21894.
## 5 2256. 3618. 3632.
## 6 0 746. 606.
library(dplyr)
sultahun <- inflowsul %>% rename('2010' = '2011')
head(sultahun)
## # 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 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 2 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 3 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 6 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## # ... with 1 more variable: 2021 <dbl>
sul4 <- distinct(inflowsul, `2018`)
sul4
## # A tibble: 6 x 1
## `2018`
## <dbl>
## 1 7522
## 2 7781.
## 3 3701.
## 4 21894.
## 5 3632.
## 6 606.
sul5 <- distinct(inflowsul, `2020`, .keep_all = TRUE)
sul5
## # 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 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 2 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 3 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 6 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## # ... 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.
sul6 <- inflowsul %>%
filter(Provinsi <= 'Sulawesi') %>%
select(`2016`,`2017`)
sul6
## # A tibble: 1 x 2
## `2016` `2017`
## <dbl> <dbl>
## 1 7002 6603
sul7 <- inflowsul %>%
filter(Provinsi == 'Sulawesi', Provinsi == 'Sulawesi Tenggara') %>%
select( -`2018`)
sul7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## # 2014 <dbl>, 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2019 <dbl>, 2020 <dbl>,
## # 2021 <dbl>
str(inflowsul)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
## $ 2011 : num [1:6] 3697 5671 1563 10593 659 ...
## $ 2012 : num [1:6] 4637 6635 1885 13702 964 ...
## $ 2013 : num [1:6] 9405 21646 1520 17770 6093 ...
## $ 2014 : num [1:6] 6402 7374 3000 19384 2256 ...
## $ 2015 : num [1:6] 6179 6286 2593 19583 2385 ...
## $ 2016 : num [1:6] 7002 7266 2665 21043 3491 ...
## $ 2017 : num [1:6] 6603 7044 2806 18803 3618 ...
## $ 2018 : num [1:6] 7522 7781 3701 21894 3632 ...
## $ 2019 : num [1:6] 8306 7809 4042 24749 4390 ...
## $ 2020 : num [1:6] 6921 6324 3052 21551 3353 ...
## $ 2021 : num [1:6] 5798 4671 2453 18335 3270 ...
str(inflowsul %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" ...
## $ 2011 : num [1:6] 3697 5671 1563 10593 659 ...
## $ 2012 : num [1:6] 4637 6635 1885 13702 964 ...
## $ 2013 : num [1:6] 9405 21646 1520 17770 6093 ...
## $ 2014 : num [1:6] 6402 7374 3000 19384 2256 ...
## $ 2015 : num [1:6] 6179 6286 2593 19583 2385 ...
## $ 2016 : num [1:6] 7002 7266 2665 21043 3491 ...
## $ 2017 : num [1:6] 6603 7044 2806 18803 3618 ...
## $ 2018 : num [1:6] 7522 7781 3701 21894 3632 ...
## $ 2019 : num [1:6] 8306 7809 4042 24749 4390 ...
## $ 2020 : num [1:6] 6921 6324 3052 21551 3353 ...
## $ 2021 : num [1:6] 5798 4671 2453 18335 3270 ...
## - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:6] "Sulawesi" "Sulawesi Barat" "Sulawesi Selatan" "Sulawesi Tengah" ...
## ..$ .rows : list<int> [1:6]
## .. ..$ : int 1
## .. ..$ : int 6
## .. ..$ : int 4
## .. ..$ : int 3
## .. ..$ : int 5
## .. ..$ : int 2
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
sulup <- inflowsul %>%
group_by(Provinsi)
sulup
## # 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 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 2 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 3 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 6 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## # ... with 1 more variable: 2021 <dbl>
sulubah <- arrange(inflowsul, `2020`)
sulubah
## # 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 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## 2 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 3 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 4 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 5 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 6 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## # ... with 1 more variable: 2021 <dbl>
sulup1 <- inflowsul %>%
mutate(`2022` = inflowsul$`2021`/2)
sulup1
## # 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 Sulawesi 3697 4637 9405 6402 6.18e3 7002 6603 7522 8306 6921
## 2 Sulawes~ 5671. 6635. 21646. 7374. 6.29e3 7266. 7044. 7781. 7809. 6324.
## 3 Sulawes~ 1563. 1885. 1520. 3000. 2.59e3 2665. 2806. 3701. 4042. 3052.
## 4 Sulawes~ 10593. 13702. 17770. 19384. 1.96e4 21043. 18803. 21894. 24749. 21551.
## 5 Sulawes~ 659. 964. 6093. 2256. 2.38e3 3491. 3618. 3632. 4390. 3353.
## 6 Sulawes~ 0 0 0 0 4.92e1 536. 746. 606. 542. 329.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2020`)) +
geom_point()
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2018`)) +
geom_point()
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2020`)) +
geom_bar(stat = "identity")
ggplot(data = inflowsul, mapping = aes(x = Provinsi, y = `2018`)) +
geom_bar(stat = "identity")