Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Pivot pada umumnya adalah laporan berbentuk tabel yang dalam waktu singkat bisa menampilkan ringkasan dari jumlah data besar kedalam bentuk atau orientasi berbeda serta mampu melakukan kalkulasi pada setiap item yang dibutuhkan.
Misalnya, jika kita memiliki data yang didownload dari sebuah sistem atau dibuat sendiri dengan jumlah ratusan, ribuan, atau bahkan ratusan ribu baris data, tentunya akan sulit untuk mengolah serta mendapatkan informasi secara cepat. Informasi yang dimaksud misalnya: Menampilkan data berdasarkan kriteria atau perhitungan tertentu, membandingkan antar field(kolom) satu dengan yang lainnya, menampilkan perulangan data, hubungan perulangan data pada suatu periode dan lain sebagainya.
Berkaitan dengan menampilkan data berdasarkan kriteria tertentu, microsoft Excel sebenarnya sudah menyediakan fasilitas seperti Filter untuk dapat melakukan filtering pada table. Tetapi, pada kasus tertentu fitur ini terkadang belum terlalu efektif untuk menampilkan informasi secara cepat. Sehingga, keterbatasan itu bisa ditanggulangi dengan menggunakan kemampuan Pivot Table. Selain menggunakan microsoft Excel kita juga bisa menggunakan Bahasa pemograman Rstudio (R). Berikut contoh pivot data Uang kartal jambi dari tahun 2011-2021 menggunakan syntax bahasa R.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
InflowJawa <- read_excel(path = "C:/Users/Putri Oktavia/OneDrive/Dokumen/InflowJawa.xlsx")
InflowJawa
## # A tibble: 6 x 12
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 123917. 160482. 134998. 217303. 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5
## 2 Jawa Barat 43775. 60629. 35190. 78660. 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4
## 3 Jawa Tengah 35137. 43298. 42182. 60476. 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4
## 4 Yogyakarta 6490. 9173. 8939. 13890. 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4
## 5 Jawa Timur 38515. 47383. 48687. 64276. 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5
## 6 Banten 0 0 0 0 0 0 1.49e3 4.83e3 4.48e3
## # ... 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.4 v dplyr 1.0.8
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.0.2 v forcats 0.5.1
## Warning: package 'dplyr' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
pivot_longer()
“lengthens” data, increasing the number of rows and decreasing the number of columns. The inverse transformation is pivot_wider()
.
dataLength <- InflowJawa %>%
pivot_longer(!Keterangan, names_to = "Tahun", values_to = "Kasus")
dataLength
## # A tibble: 66 x 3
## Keterangan Tahun Kasus
## <chr> <chr> <dbl>
## 1 Jawa 2011 123917.
## 2 Jawa 2012 160482.
## 3 Jawa 2013 134998.
## 4 Jawa 2014 217303.
## 5 Jawa 2015 230141.
## 6 Jawa 2016 261607.
## 7 Jawa 2017 277609.
## 8 Jawa 2018 306911.
## 9 Jawa 2019 324624.
## 10 Jawa 2020 259444.
## # ... with 56 more rows
Memilih variable Daerah dan Kasus
library(dplyr)
JawaUp <- select(dataLength, Keterangan, Kasus)
JawaUp
## # A tibble: 66 x 2
## Keterangan Kasus
## <chr> <dbl>
## 1 Jawa 123917.
## 2 Jawa 160482.
## 3 Jawa 134998.
## 4 Jawa 217303.
## 5 Jawa 230141.
## 6 Jawa 261607.
## 7 Jawa 277609.
## 8 Jawa 306911.
## 9 Jawa 324624.
## 10 Jawa 259444.
## # ... with 56 more rows
Menyeleksi baris atau observasi berdasarkan nilai.
library(dplyr)
JawaUp1 <- dataLength %>%
filter(Keterangan > 'Jawa Barat') %>%
select('Keterangan', 'Tahun', 'Kasus')
JawaUp1
## # A tibble: 33 x 3
## Keterangan Tahun Kasus
## <chr> <chr> <dbl>
## 1 Jawa Tengah 2011 35137.
## 2 Jawa Tengah 2012 43298.
## 3 Jawa Tengah 2013 42182.
## 4 Jawa Tengah 2014 60476.
## 5 Jawa Tengah 2015 65198.
## 6 Jawa Tengah 2016 72782.
## 7 Jawa Tengah 2017 77031.
## 8 Jawa Tengah 2018 87829.
## 9 Jawa Tengah 2019 90751.
## 10 Jawa Tengah 2020 84970.
## # ... with 23 more rows
JawaUp2 <- dataLength %>%
filter(Keterangan <= 'Yogyakarta', Tahun <= '2019') %>%
select('Keterangan', 'Tahun', 'Kasus')
JawaUp2
## # A tibble: 54 x 3
## Keterangan Tahun Kasus
## <chr> <chr> <dbl>
## 1 Jawa 2011 123917.
## 2 Jawa 2012 160482.
## 3 Jawa 2013 134998.
## 4 Jawa 2014 217303.
## 5 Jawa 2015 230141.
## 6 Jawa 2016 261607.
## 7 Jawa 2017 277609.
## 8 Jawa 2018 306911.
## 9 Jawa 2019 324624.
## 10 Jawa Barat 2011 43775.
## # ... with 44 more rows
pivot_wider()
“widens” data, increasing the number of columns and decreasing the number of rows. The inverse transformation is pivot_longer()
.
JawaID <- dataLength %>%
pivot_wider(names_from = "Tahun",
values_from = "Kasus")
JawaID
## # A tibble: 6 x 12
## Keterangan `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Jawa 123917. 160482. 134998. 217303. 2.30e5 2.62e5 2.78e5 3.07e5 3.25e5
## 2 Jawa Barat 43775. 60629. 35190. 78660. 8.13e4 8.80e4 8.32e4 8.72e4 9.48e4
## 3 Jawa Tengah 35137. 43298. 42182. 60476. 6.52e4 7.28e4 7.70e4 8.78e4 9.08e4
## 4 Yogyakarta 6490. 9173. 8939. 13890. 1.48e4 1.74e4 1.75e4 2.06e4 2.09e4
## 5 Jawa Timur 38515. 47383. 48687. 64276. 6.88e4 8.34e4 9.84e4 1.06e5 1.14e5
## 6 Banten 0 0 0 0 0 0 1.49e3 4.83e3 4.48e3
## # ... with 2 more variables: 2020 <dbl>, 2021 <dbl>
ggplot(data = dataLength,
mapping = aes(x = Keterangan, y = Kasus, color = Keterangan)) +
geom_jitter(alpha = 0.9)
ggplot(data = dataLength,
mapping = aes(x = Keterangan, y = Kasus, color = Keterangan)) +
geom_jitter(alpha = 0.9)
ggplot(data = dataLength, mapping = aes(x = Tahun, y = Kasus)) +
geom_point(color = "pink")
ggplot(data = dataLength,
mapping = aes(x = Keterangan, y = Kasus)) +
geom_point(color = "dark green")
ggplot(data = dataLength, mapping = aes(x = Tahun, y = Kasus)) +
geom_point(color = "dark red") +
facet_wrap( ~ Keterangan) +
theme(axis.text.x = element_text(angle = 90))
ggplot(data = dataLength, mapping = aes(x = Keterangan, y = Kasus)) +
geom_point(color = "dark blue") +
facet_wrap( ~ Tahun) +
theme(axis.text.x = element_text(angle = 90))
ggplot(data = dataLength,
mapping = aes(x = Keterangan, y = Kasus)) +
geom_boxplot(alpha = 0) + # Do not show outliers
geom_jitter(alpha = 0.7, color = "dark orange") +
theme_bw()
ggplot(data = dataLength,
mapping = aes(x = Keterangan, y = Kasus)) +
geom_boxplot(alpha = 0) + # Do not show outliers
geom_jitter(alpha = 0.7, color = "yellow") +
theme_bw()