Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Fakultas : Sains dan Teknologi
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.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
outflowslw <- read_excel(path = "~/linear algebra/outflow sulawesi.xlsx")
outflowslw
## # A tibble: 5 x 12
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.1.3
## -- 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
## Warning: package 'ggplot2' was built under R version 4.1.3
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'readr' was built under R version 4.1.3
## Warning: package 'purrr' was built under R version 4.1.3
## Warning: package 'dplyr' was built under R version 4.1.3
## Warning: package 'forcats' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
slw1 <- select(outflowslw, '2014')
slw1
## # A tibble: 5 x 1
## `2014`
## <dbl>
## 1 7207.
## 2 5696.
## 3 15645.
## 4 3537.
## 5 0
slw2 <- select(outflowslw, '2015','2017','2018','2020')
slw2
## # A tibble: 5 x 4
## `2015` `2017` `2018` `2020`
## <dbl> <dbl> <dbl> <dbl>
## 1 7202. 8421. 7605. 7437.
## 2 5310. 5226. 5578. 4674.
## 3 16236. 15159. 16779. 20503.
## 4 4716. 5293. 5224. 5129.
## 5 647. 2504. 3350. 2921.
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
slw3 <- select(outflowslw, -'2019')
slw3
## # A tibble: 5 x 11
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7437.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 4674.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 20503.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5129.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2921.
## # ... with 1 more variable: `2021` <dbl>
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 :
slw4 <- outflowslw %>%
select(tahun = '2011','2012','2015')
slw4
## # A tibble: 5 x 3
## tahun `2012` `2015`
## <dbl> <dbl> <dbl>
## 1 6606. 6375. 7202.
## 2 4017. 4458. 5310.
## 3 8967. 11873. 16236.
## 4 2889. 2950. 4716.
## 5 0 0 647.
library(dplyr)
slwtahun <- outflowslw %>% rename('2009' = '2011')
head(slwtahun)
## # A tibble: 5 x 12
## Keterangan `2009` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>
slw5 <- distinct(outflowslw, `2014`)
slw5
## # A tibble: 5 x 1
## `2014`
## <dbl>
## 1 7207.
## 2 5696.
## 3 15645.
## 4 3537.
## 5 0
slw6 <- distinct(outflowslw, `2014`, .keep_all = TRUE)
slw6
## # A tibble: 5 x 12
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## # ... with 2 more variables: `2020` <dbl>, `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.
slw7 <- outflowslw %>%
filter(Keterangan <= 'Sulawesi Utara') %>%
select('2017','2018')
slw7
## # A tibble: 5 x 2
## `2017` `2018`
## <dbl> <dbl>
## 1 8421. 7605.
## 2 5226. 5578.
## 3 15159. 16779.
## 4 5293. 5224.
## 5 2504. 3350.
slw8 <- outflowslw %>%
filter(Keterangan == 'Sulawesi Utara', Keterangan == 'Sulawesi Tengah') %>%
select(-`2020`)
slw8
## # A tibble: 0 x 11
## # ... with 11 variables: Keterangan <chr>, 2011 <dbl>, 2012 <dbl>, 2013 <dbl>,
## # 2014 <dbl>, 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>,
## # 2021 <dbl>
str(outflowslw)
## tibble [5 x 12] (S3: tbl_df/tbl/data.frame)
## $ Keterangan: chr [1:5] "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" "Sulawesi Tenggara" ...
## $ 2011 : num [1:5] 6606 4017 8967 2889 0
## $ 2012 : num [1:5] 6375 4458 11873 2950 0
## $ 2013 : num [1:5] 22740 4544 11485 4239 0
## $ 2014 : num [1:5] 7207 5696 15645 3537 0
## $ 2015 : num [1:5] 7202 5310 16236 4716 647
## $ 2016 : num [1:5] 7707 4962 15494 4488 1514
## $ 2017 : num [1:5] 8421 5226 15159 5293 2504
## $ 2018 : num [1:5] 7605 5578 16779 5224 3350
## $ 2019 : num [1:5] 7367 5531 18089 5056 2749
## $ 2020 : num [1:5] 7437 4674 20503 5129 2921
## $ 2021 : num [1:5] 3050 2763 12017 2507 2079
str(outflowslw %>% group_by(Keterangan))
## grouped_df [5 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Keterangan: chr [1:5] "Sulawesi Utara" "Sulawesi Tengah" "Sulawesi Selatan" "Sulawesi Tenggara" ...
## $ 2011 : num [1:5] 6606 4017 8967 2889 0
## $ 2012 : num [1:5] 6375 4458 11873 2950 0
## $ 2013 : num [1:5] 22740 4544 11485 4239 0
## $ 2014 : num [1:5] 7207 5696 15645 3537 0
## $ 2015 : num [1:5] 7202 5310 16236 4716 647
## $ 2016 : num [1:5] 7707 4962 15494 4488 1514
## $ 2017 : num [1:5] 8421 5226 15159 5293 2504
## $ 2018 : num [1:5] 7605 5578 16779 5224 3350
## $ 2019 : num [1:5] 7367 5531 18089 5056 2749
## $ 2020 : num [1:5] 7437 4674 20503 5129 2921
## $ 2021 : num [1:5] 3050 2763 12017 2507 2079
## - attr(*, "groups")= tibble [5 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Keterangan: chr [1:5] "Sulawesi Barat" "Sulawesi Selatan" "Sulawesi Tengah" "Sulawesi Tenggara" ...
## ..$ .rows : list<int> [1:5]
## .. ..$ : int 5
## .. ..$ : int 3
## .. ..$ : int 2
## .. ..$ : int 4
## .. ..$ : int 1
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
slwgrup <- outflowslw %>%
group_by(Keterangan)
slwgrup
## # A tibble: 5 x 12
## # Groups: Keterangan [5]
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>
slwsort <- arrange(outflowslw, `2017`)
slwsort
## # A tibble: 5 x 12
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 4 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 5 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## # ... with 2 more variables: `2020` <dbl>, `2021` <dbl>
slwgrup1 <- outflowslw %>%
mutate(`2022` = outflowslw$`2021`/2)
slwgrup1
## # A tibble: 5 x 13
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Sulawesi Utara 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367.
## 2 Sulawesi Tengah 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531.
## 3 Sulawesi Selat~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089.
## 4 Sulawesi Tengg~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056.
## 5 Sulawesi Barat 0 0 0 0 647. 1514. 2504. 3350. 2749.
## # ... with 3 more variables: `2020` <dbl>, `2021` <dbl>, `2022` <dbl>
ggplot(data = outflowslw, mapping = aes(x = Keterangan, y = `2021`)) +
geom_point()
ggplot(data = outflowslw, mapping = aes(x = Keterangan, y = `2019`)) + geom_point()
ggplot(data = outflowslw, mapping = aes(x = Keterangan, y = `2021`))+geom_bar(stat = "identity")
ggplot(data = outflowslw, mapping = aes(x = Keterangan, y = `2019`))+geom_bar(stat = "identity")