Dosen Pengampu : Prof. Dr. Suhartono, M.Kom

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Fakultas : Sains dan Teknologi

Jurusan : Teknik Informatika

Kelas : (C) Linear Algebra

NIM : 210605110058

Pivot pada Pemrograman R

Pivot Table adalah ringkasan data yang dikemas dalam tabel interaktif agar memudahkan dan membantu kamu untuk membuat laporan dan menganalisisnya dengan melihat perbandingan data yang kamu miliki.

Singkatnya, gunanya pivot table adalah untuk merangkum, mengelompokkan, mengeksplorasi, mempresentasikan, menghitung, dan menganalisa data.

library(readxl)
InflowKalimantan <- read_excel(path = "/Users/aisharadianto/Documents/College 2/(C) Linear Algebra/InflowKalimantan2.xlsx")
InflowKalimantan
## # A tibble: 6 × 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Kalimantan      13272. 17575. 37698. 26379. 29427. 32847. 35119. 41157. 46158.
## 2 Kalimantan Bar…  2831.  3386.  4029.  5943.  6675.  7440.  7775. 10249. 11848.
## 3 Kalimantan Ten…   779.  1135. 19328.  1887.  3547.  3694.  3655.  4083.  4385.
## 4 Kalimantan Sel…  5369.  7311.  4226.  9614.  9558. 10809. 12415. 13604. 14462.
## 5 Kalimantan Tim…  4293.  5743. 10115.  8936.  9646. 10903. 10933. 12305. 13991.
## 6 Kalimantan Uta…     0      0      0      0      0      0    341.   917.  1472.
## # … with 2 more variables: `2020` <dbl>, `2021` <dbl>
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.6     ✓ dplyr   1.0.8
## ✓ tidyr   1.2.0     ✓ stringr 1.4.0
## ✓ readr   2.1.2     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

pivot_longer()

pivot_longer() “lengthens” data, increasing the number of rows and decreasing the number of columns. The inverse transformation is pivot_wider().

dataLength <- InflowKalimantan %>% 
  pivot_longer(!Keterangan, names_to = "Tahun", values_to = "Kasus")
dataLength 
## # A tibble: 66 × 3
##    Keterangan Tahun  Kasus
##    <chr>      <chr>  <dbl>
##  1 Kalimantan 2011  13272.
##  2 Kalimantan 2012  17575.
##  3 Kalimantan 2013  37698.
##  4 Kalimantan 2014  26379.
##  5 Kalimantan 2015  29427.
##  6 Kalimantan 2016  32847.
##  7 Kalimantan 2017  35119.
##  8 Kalimantan 2018  41157.
##  9 Kalimantan 2019  46158.
## 10 Kalimantan 2020  37200.
## # … with 56 more rows

Memilih variable Daerah dan Kasus

library(dplyr)
KalimantanUp <- select(dataLength, Keterangan, Kasus)
KalimantanUp
## # A tibble: 66 × 2
##    Keterangan  Kasus
##    <chr>       <dbl>
##  1 Kalimantan 13272.
##  2 Kalimantan 17575.
##  3 Kalimantan 37698.
##  4 Kalimantan 26379.
##  5 Kalimantan 29427.
##  6 Kalimantan 32847.
##  7 Kalimantan 35119.
##  8 Kalimantan 41157.
##  9 Kalimantan 46158.
## 10 Kalimantan 37200.
## # … with 56 more rows

Menyeleksi baris atau observasi berdasarkan nilai.

library(dplyr)
KalimantanUp1 <- dataLength  %>%
    filter(Keterangan > 'Kalimantan Barat') %>%
    select('Keterangan', 'Tahun', 'Kasus')
KalimantanUp1 
## # A tibble: 44 × 3
##    Keterangan        Tahun  Kasus
##    <chr>             <chr>  <dbl>
##  1 Kalimantan Tengah 2011    779.
##  2 Kalimantan Tengah 2012   1135.
##  3 Kalimantan Tengah 2013  19328.
##  4 Kalimantan Tengah 2014   1887.
##  5 Kalimantan Tengah 2015   3547.
##  6 Kalimantan Tengah 2016   3694.
##  7 Kalimantan Tengah 2017   3655.
##  8 Kalimantan Tengah 2018   4083.
##  9 Kalimantan Tengah 2019   4385.
## 10 Kalimantan Tengah 2020   4178.
## # … with 34 more rows
KalimantanUp2 <- dataLength %>%
  filter(Keterangan <= 'Kalimantan', Tahun <= '2019') %>%
 select('Keterangan', 'Tahun', 'Kasus')
KalimantanUp2
## # A tibble: 9 × 3
##   Keterangan Tahun  Kasus
##   <chr>      <chr>  <dbl>
## 1 Kalimantan 2011  13272.
## 2 Kalimantan 2012  17575.
## 3 Kalimantan 2013  37698.
## 4 Kalimantan 2014  26379.
## 5 Kalimantan 2015  29427.
## 6 Kalimantan 2016  32847.
## 7 Kalimantan 2017  35119.
## 8 Kalimantan 2018  41157.
## 9 Kalimantan 2019  46158.

pivot_wider()

pivot_wider() “widens” data, increasing the number of columns and decreasing the number of rows. The inverse transformation is pivot_longer().

KalimantanID <- dataLength %>% 
  pivot_wider(names_from = "Tahun", 
                     values_from = "Kasus")
KalimantanID
## # A tibble: 6 × 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Kalimantan      13272. 17575. 37698. 26379. 29427. 32847. 35119. 41157. 46158.
## 2 Kalimantan Bar…  2831.  3386.  4029.  5943.  6675.  7440.  7775. 10249. 11848.
## 3 Kalimantan Ten…   779.  1135. 19328.  1887.  3547.  3694.  3655.  4083.  4385.
## 4 Kalimantan Sel…  5369.  7311.  4226.  9614.  9558. 10809. 12415. 13604. 14462.
## 5 Kalimantan Tim…  4293.  5743. 10115.  8936.  9646. 10903. 10933. 12305. 13991.
## 6 Kalimantan Uta…     0      0      0      0      0      0    341.   917.  1472.
## # … with 2 more variables: `2020` <dbl>, `2021` <dbl>

Visualisasi Pivot

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()

Referensi

https://rpubs.com/suhartono-uinmaliki/868629

https://rstudio-pubs-static.s3.amazonaws.com/879056_2be9ab71fd72445987e25a599a439406.html

https://tidyr.tidyverse.org/reference/pivot_longer.html

https://www.rdocumentation.org/packages/tidyr/versions/1.1.3/topics/pivot_wider