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
inflowgo <- read_excel(path = "C:/Users/Daffa/Downloads/kuliah/Semester 2/Linear Algebra/Menjelang UAS/Manipulasiinflow-outflow/InflowGomapu.xlsx")
inflowgo
## # 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 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## # ... 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()
go1 <- select(inflowgo, `2015`)
go1
## # A tibble: 6 x 1
## `2015`
## <dbl>
## 1 1882
## 2 0
## 3 1007.
## 4 1790.
## 5 6099.
## 6 518.
sul2 <- select(inflowgo, `2017`, `2018`, `2019`, `2020`, `2021`)
sul2
## # A tibble: 6 x 5
## `2017` `2018` `2019` `2020` `2021`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2221 3011 1071 3640 2785
## 2 0 1088. 1983. 2227. 1770.
## 3 1339. 1530. 1924. 1876. 1738.
## 4 2484. 3210. 4056. 2909. 2795.
## 5 6353. 8076. 9259. 9556. 8509.
## 6 933. 1153. 1448. 1635. 1907.
Sintaks dibawah ini digunakan untuk memilih beberapa variabel yang ketika variabel yang dipilih itu lebih banyak dibandingkan variabel yang akan dibuang.
go3 <- select(inflowgo, -`2019`)
go3
## # A tibble: 6 x 11
## Provinsi `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2020` `2021`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 3640 2785
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 2227. 1770.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1876. 1738.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 2909. 2795.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9556. 8509.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1635. 1907.
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 :
go4 <- inflowgo %>%
select(tahun = `2014`, `2015`, `2016`)
go4
## # A tibble: 6 x 3
## tahun `2015` `2016`
## <dbl> <dbl> <dbl>
## 1 1918 1882 2147
## 2 0 0 0
## 3 1006. 1007. 1259.
## 4 1781. 1790. 2367.
## 5 6794. 6099. 6291.
## 6 11.7 518. 818.
library(dplyr)
gotahun <- inflowgo %>% rename('2010' = '2011')
head(gotahun)
## # 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 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## # ... with 1 more variable: 2021 <dbl>
go4 <- distinct(inflowgo, `2020`)
go4
## # A tibble: 6 x 1
## `2020`
## <dbl>
## 1 3640
## 2 2227.
## 3 1876.
## 4 2909.
## 5 9556.
## 6 1635.
go5 <- distinct(inflowgo, `2018`, .keep_all = TRUE)
go5
## # 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 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## # ... 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.
go6 <- inflowgo %>%
filter(Provinsi <= 'Gomapu') %>%
select(`2020`,`2021`)
go6
## # A tibble: 1 x 2
## `2020` `2021`
## <dbl> <dbl>
## 1 3640 2785
go7 <- inflowgo %>%
filter(Provinsi == 'Gomapu', Provinsi == 'Gorontalo') %>%
select( -`2018`)
go7
## # 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(inflowgo)
## tibble [6 x 12] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku Utara" "Maluku" ...
## $ 2011 : num [1:6] 1313 0 586 1273 4710 ...
## $ 2012 : num [1:6] 1565 0 633 1147 6047 ...
## $ 2013 : num [1:6] 3385 0 10273 4341 2131 ...
## $ 2014 : num [1:6] 1918 0 1006 1781 6794 ...
## $ 2015 : num [1:6] 1882 0 1007 1790 6099 ...
## $ 2016 : num [1:6] 2147 0 1259 2367 6291 ...
## $ 2017 : num [1:6] 2221 0 1339 2484 6353 ...
## $ 2018 : num [1:6] 3011 1088 1530 3210 8076 ...
## $ 2019 : num [1:6] 1071 1983 1924 4056 9259 ...
## $ 2020 : num [1:6] 3640 2227 1876 2909 9556 ...
## $ 2021 : num [1:6] 2785 1770 1738 2795 8509 ...
str(inflowgo %>% group_by(Provinsi))
## grouped_df [6 x 12] (S3: grouped_df/tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku Utara" "Maluku" ...
## $ 2011 : num [1:6] 1313 0 586 1273 4710 ...
## $ 2012 : num [1:6] 1565 0 633 1147 6047 ...
## $ 2013 : num [1:6] 3385 0 10273 4341 2131 ...
## $ 2014 : num [1:6] 1918 0 1006 1781 6794 ...
## $ 2015 : num [1:6] 1882 0 1007 1790 6099 ...
## $ 2016 : num [1:6] 2147 0 1259 2367 6291 ...
## $ 2017 : num [1:6] 2221 0 1339 2484 6353 ...
## $ 2018 : num [1:6] 3011 1088 1530 3210 8076 ...
## $ 2019 : num [1:6] 1071 1983 1924 4056 9259 ...
## $ 2020 : num [1:6] 3640 2227 1876 2909 9556 ...
## $ 2021 : num [1:6] 2785 1770 1738 2795 8509 ...
## - attr(*, "groups")= tibble [6 x 2] (S3: tbl_df/tbl/data.frame)
## ..$ Provinsi: chr [1:6] "Gomapu" "Gorontalo" "Maluku" "Maluku Utara" ...
## ..$ .rows : list<int> [1:6]
## .. ..$ : int 1
## .. ..$ : int 2
## .. ..$ : int 4
## .. ..$ : int 3
## .. ..$ : int 5
## .. ..$ : int 6
## .. ..@ ptype: int(0)
## ..- attr(*, ".drop")= logi TRUE
goup <- inflowgo %>%
group_by(Provinsi)
goup
## # 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 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## # ... with 1 more variable: 2021 <dbl>
goubah <- arrange(inflowgo, `2016`)
goubah
## # 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 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 2 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 5 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 6 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## # ... with 1 more variable: 2021 <dbl>
goup1 <- inflowgo %>%
mutate(`2022` = inflowgo$`2021`/2)
goup1
## # 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 Gomapu 1313 1565 3385 1918 1882 2147 2221 3011 1071 3640
## 2 Goronta~ 0 0 0 0 0 0 0 1088. 1983. 2227.
## 3 Maluku ~ 586. 633. 10273. 1006. 1007. 1259. 1339. 1530. 1924. 1876.
## 4 Maluku 1273. 1147. 4341. 1781. 1790. 2367. 2484. 3210. 4056. 2909.
## 5 Papua 4710. 6047. 2131. 6794. 6099. 6291. 6353. 8076. 9259. 9556.
## 6 Papua B~ 0 0 0 11.7 518. 818. 933. 1153. 1448. 1635.
## # ... with 2 more variables: 2021 <dbl>, 2022 <dbl>
ggplot(data = inflowgo, mapping = aes(x = Provinsi, y = `2020`)) +
geom_point()
ggplot(data = inflowgo, mapping = aes(x = Provinsi, y = `2021`)) +
geom_point()
ggplot(data = inflowgo, mapping = aes(x = Provinsi, y = `2020`)) +
geom_bar(stat = "identity")
ggplot(data = inflowgo, mapping = aes(x = Provinsi, y = `2021`)) +
geom_bar(stat = "identity")