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
outflowbali <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/OutflowBali.xlsx")
outflowbali
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## # ... 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()
bali1 <- select(outflowbali, `2013`)
bali1
## # A tibble: 4 x 1
## `2013`
## <dbl>
## 1 29399.
## 2 7248.
## 3 10628.
## 4 11524.
bali2 <- select(outflowbali, `2012`, `2014`, `2016`, `2018`, `2020`)
bali2
## # A tibble: 4 x 5
## `2012` `2014` `2016` `2018` `2020`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 19421. 23391. 31941. 37260. 31224.
## 2 10782. 13104. 18140. 20434. 14323.
## 3 4379. 5620. 8149. 9271. 8546.
## 4 4260. 4668. 5652. 7555. 8356.
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
bali3 <- select(outflowbali, -`2016`)
bali3
## # A tibble: 4 x 11
## Provinsi `2011` `2012` `2013` `2014` `2015` `2017` `2018` `2019` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 34160. 37260. 38680. 31224. 15224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 17822. 20434. 20654. 14323. 6531.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8770. 9271. 10288. 8546. 5222.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 7569. 7555. 7738. 8356. 3472.
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 :
bali4 <- outflowbali %>%
select(tahun = `2015`, `2020`, `2021`)
bali4
## # A tibble: 4 x 3
## tahun `2020` `2021`
## <dbl> <dbl> <dbl>
## 1 26728. 31224. 15224.
## 2 14471. 14323. 6531.
## 3 6728. 8546. 5222.
## 4 5530. 8356. 3472.
library(dplyr)
balitahun <- outflowbali %>% rename('2010' = '2011')
head(balitahun)
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## # ... with 1 more variable: 2021 <dbl>
bali4 <- distinct(outflowbali, `2020`)
bali4
## # A tibble: 4 x 1
## `2020`
## <dbl>
## 1 31224.
## 2 14323.
## 3 8546.
## 4 8356.
bali5 <- distinct(outflowbali, `2018`, .keep_all = TRUE)
bali5
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## # ... 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.
bali6 <- outflowbali %>%
filter(Provinsi <= 'Bali') %>%
select(`2020`,`2021`)
bali6
## # A tibble: 1 x 2
## `2020` `2021`
## <dbl> <dbl>
## 1 14323. 6531.
bali7 <- outflowbali %>%
filter(Provinsi == 'Bali', Provinsi == 'Nusa Tenggara Barat') %>%
select( -`2021`)
bali7
## # 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(outflowbali)
## tibble [4 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
## $ 2011 : num [1:4] 16424 8912 3819 3693
## $ 2012 : num [1:4] 19421 10782 4379 4260
## $ 2013 : num [1:4] 29399 7248 10628 11524
## $ 2014 : num [1:4] 23391 13104 5620 4668
## $ 2015 : num [1:4] 26728 14471 6728 5530
## $ 2016 : num [1:4] 31941 18140 8149 5652
## $ 2017 : num [1:4] 34160 17822 8770 7569
## $ 2018 : num [1:4] 37260 20434 9271 7555
## $ 2019 : num [1:4] 38680 20654 10288 7738
## $ 2020 : num [1:4] 31224 14323 8546 8356
## $ 2021 : num [1:4] 15224 6531 5222 3472
str(outflowbali %>% group_by(Provinsi))
## grouped_df [4 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:4] "Bali Nusra" "Bali" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
## $ 2011 : num [1:4] 16424 8912 3819 3693
## $ 2012 : num [1:4] 19421 10782 4379 4260
## $ 2013 : num [1:4] 29399 7248 10628 11524
## $ 2014 : num [1:4] 23391 13104 5620 4668
## $ 2015 : num [1:4] 26728 14471 6728 5530
## $ 2016 : num [1:4] 31941 18140 8149 5652
## $ 2017 : num [1:4] 34160 17822 8770 7569
## $ 2018 : num [1:4] 37260 20434 9271 7555
## $ 2019 : num [1:4] 38680 20654 10288 7738
## $ 2020 : num [1:4] 31224 14323 8546 8356
## $ 2021 : num [1:4] 15224 6531 5222 3472
## - attr(*, "groups")= tibble [4 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:4] "Bali" "Bali Nusra" "Nusa Tenggara Barat" "Nusa Tenggara Timur"
## ..$ .rows : list<int> [1:4]
## .. ..$ : int 2
## .. ..$ : int 1
## .. ..$ : int 3
## .. ..$ : int 4
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
baliup <- outflowbali %>%
group_by(Provinsi)
baliup
## # A tibble: 4 x 12
## # Groups: Provinsi [4]
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## # ... with 1 more variable: 2021 <dbl>
baliubah <- arrange(outflowbali, `2017`)
baliubah
## # A tibble: 4 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 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## 2 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 3 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 4 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## # ... with 1 more variable: 2021 <dbl>
baliup1 <- outflowbali %>%
mutate(`2022` = outflowbali$`2021`/2)
baliup1
## # A tibble: 4 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 Bali Nu~ 16424. 19421. 29399. 23391. 26728. 31941. 34160. 37260. 38680. 31224.
## 2 Bali 8912. 10782. 7248. 13104. 14471. 18140. 17822. 20434. 20654. 14323.
## 3 Nusa Te~ 3819. 4379. 10628. 5620. 6728. 8149. 8770. 9271. 10288. 8546.
## 4 Nusa Te~ 3693. 4260. 11524. 4668. 5530. 5652. 7569. 7555. 7738. 8356.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>
ggplot(data = outflowbali, mapping = aes(x = Provinsi, y = `2021`)) +
geom_point()
ggplot(data = outflowbali, mapping = aes(x = Provinsi, y = `2019`)) +
geom_point()
ggplot(data = outflowbali, mapping = aes(x = Provinsi, y = `2015`)) +
geom_bar(stat = "identity")
ggplot(data = outflowbali, mapping = aes(x = Provinsi, y = `2016`)) +
geom_bar(stat = "identity")