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
outflowsul <- read_excel(path = "C:/Users/ASUS PC/Documents/BUKU NOVA/RStudio/RMarkdown/OutflowSulawesi.xlsx")
outflowsul
## # 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 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2921.
## # ... 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(outflowsul, `2019`)
sul1
## # A tibble: 6 x 1
## `2019`
## <dbl>
## 1 7758.
## 2 7367.
## 3 5531.
## 4 18089.
## 5 5056.
## 6 2749.
sul2 <- select(outflowsul, `2015`, `2016`, `2017`, `2018`, `2019`)
sul2
## # A tibble: 6 x 5
## `2015` `2016` `2017` `2018` `2019`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 6822. 6833 7321. 7708. 7758.
## 2 7202. 7707. 8421. 7605. 7367.
## 3 5310. 4962. 5226. 5578. 5531.
## 4 16236. 15494. 15159. 16779. 18089.
## 5 4716. 4488. 5293. 5224. 5056.
## 6 647. 1514. 2504. 3350. 2749.
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
sul3 <- select(outflowsul, -`2020`)
sul3
## # 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 Sulawesi 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 4483.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 3050.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 2763.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 12017.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 2507.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2079.
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 <- outflowsul %>%
select(tahun = `2014`, `2020`, `2021`)
sul4
## # A tibble: 6 x 3
## tahun `2020` `2021`
## <dbl> <dbl> <dbl>
## 1 6417 8133. 4483.
## 2 7207. 7437. 3050.
## 3 5696. 4674. 2763.
## 4 15645. 20503. 12017.
## 5 3537. 5129. 2507.
## 6 0 2921. 2079.
library(dplyr)
sultahun <- outflowsul %>% 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 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2921.
## # ... with 1 more variable: 2021 <dbl>
sul4 <- distinct(outflowsul, `2018`)
sul4
## # A tibble: 6 x 1
## `2018`
## <dbl>
## 1 7708.
## 2 7605.
## 3 5578.
## 4 16779.
## 5 5224.
## 6 3350.
sul5 <- distinct(outflowsul, `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 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2921.
## # ... 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 <- outflowsul %>%
filter(Provinsi <= 'Sulawesi') %>%
select(`2018`,`2019`)
sul6
## # A tibble: 1 x 2
## `2018` `2019`
## <dbl> <dbl>
## 1 7708. 7758.
sul7 <- outflowsul %>%
filter(Provinsi == 'Sulawesi', Provinsi == 'Sulawesi Selatan') %>%
select( -`2013`)
sul7
## # A tibble: 0 x 11
## # ... with 11 variables: Provinsi <chr>, 2011 <dbl>, 2012 <dbl>, 2014 <dbl>,
## # 2015 <dbl>, 2016 <dbl>, 2017 <dbl>, 2018 <dbl>, 2019 <dbl>, 2020 <dbl>,
## # 2021 <dbl>
str(outflowsul)
## 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] 4496 6606 4017 8967 2889 ...
## $ 2012 : num [1:6] 5131 6375 4458 11873 2950 ...
## $ 2013 : num [1:6] 8602 22740 4544 11485 4239 ...
## $ 2014 : num [1:6] 6417 7207 5696 15645 3537 ...
## $ 2015 : num [1:6] 6822 7202 5310 16236 4716 ...
## $ 2016 : num [1:6] 6833 7707 4962 15494 4488 ...
## $ 2017 : num [1:6] 7321 8421 5226 15159 5293 ...
## $ 2018 : num [1:6] 7708 7605 5578 16779 5224 ...
## $ 2019 : num [1:6] 7758 7367 5531 18089 5056 ...
## $ 2020 : num [1:6] 8133 7437 4674 20503 5129 ...
## $ 2021 : num [1:6] 4483 3050 2763 12017 2507 ...
str(outflowsul %>% 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] 4496 6606 4017 8967 2889 ...
## $ 2012 : num [1:6] 5131 6375 4458 11873 2950 ...
## $ 2013 : num [1:6] 8602 22740 4544 11485 4239 ...
## $ 2014 : num [1:6] 6417 7207 5696 15645 3537 ...
## $ 2015 : num [1:6] 6822 7202 5310 16236 4716 ...
## $ 2016 : num [1:6] 6833 7707 4962 15494 4488 ...
## $ 2017 : num [1:6] 7321 8421 5226 15159 5293 ...
## $ 2018 : num [1:6] 7708 7605 5578 16779 5224 ...
## $ 2019 : num [1:6] 7758 7367 5531 18089 5056 ...
## $ 2020 : num [1:6] 8133 7437 4674 20503 5129 ...
## $ 2021 : num [1:6] 4483 3050 2763 12017 2507 ...
## - 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 <- outflowsul %>%
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 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2921.
## # ... with 1 more variable: 2021 <dbl>
sulubah <- arrange(outflowsul, `2021`)
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 647. 1514. 2504. 3350. 2749. 2921.
## 2 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 5 Sulawesi 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 6 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## # ... with 1 more variable: 2021 <dbl>
sulup1 <- outflowsul %>%
mutate(`2022` = outflowsul$`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 4496. 5131. 8602. 6417 6822. 6833 7321. 7708. 7758. 8133.
## 2 Sulawes~ 6606. 6375. 22740. 7207. 7202. 7707. 8421. 7605. 7367. 7437.
## 3 Sulawes~ 4017. 4458. 4544. 5696. 5310. 4962. 5226. 5578. 5531. 4674.
## 4 Sulawes~ 8967. 11873. 11485. 15645. 16236. 15494. 15159. 16779. 18089. 20503.
## 5 Sulawes~ 2889. 2950. 4239. 3537. 4716. 4488. 5293. 5224. 5056. 5129.
## 6 Sulawes~ 0 0 0 0 647. 1514. 2504. 3350. 2749. 2921.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>
ggplot(data = outflowsul, mapping = aes(x = Provinsi, y = `2011`)) +
geom_point()
ggplot(data = outflowsul, mapping = aes(x = Provinsi, y = `2013`)) +
geom_point()
ggplot(data = outflowsul, mapping = aes(x = Provinsi, y = `2012`)) +
geom_bar(stat = "identity")
ggplot(data = outflowsul, mapping = aes(x = Provinsi, y = `2014`)) +
geom_bar(stat = "identity")