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)
InflowSumatera <- read_excel(path = "/Users/aisharadianto/Documents/College 2/(C) Linear Algebra/InflowSumatera2.xlsx")
InflowSumatera
## # A tibble: 11 × 12
##    Keterangan     `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera       57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau            3012.  4447.  8933. 6.36e3  7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sela…  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka B…     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3
## # … 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 <- InflowSumatera %>% 
  pivot_longer(!Keterangan, names_to = "Tahun", values_to = "Kasus")
dataLength 
## # A tibble: 121 × 3
##    Keterangan Tahun   Kasus
##    <chr>      <chr>   <dbl>
##  1 Sumatera   2011   57900.
##  2 Sumatera   2012   65911.
##  3 Sumatera   2013   98369.
##  4 Sumatera   2014   86024.
##  5 Sumatera   2015   86549.
##  6 Sumatera   2016   97764.
##  7 Sumatera   2017  103748.
##  8 Sumatera   2018  117495.
##  9 Sumatera   2019  133762.
## 10 Sumatera   2020  109345.
## # … with 111 more rows

Memilih variable Daerah dan Kasus

library(dplyr)
SumateraUp <- select(dataLength, Keterangan, Kasus)
SumateraUp
## # A tibble: 121 × 2
##    Keterangan   Kasus
##    <chr>        <dbl>
##  1 Sumatera    57900.
##  2 Sumatera    65911.
##  3 Sumatera    98369.
##  4 Sumatera    86024.
##  5 Sumatera    86549.
##  6 Sumatera    97764.
##  7 Sumatera   103748.
##  8 Sumatera   117495.
##  9 Sumatera   133762.
## 10 Sumatera   109345.
## # … with 111 more rows

Menyeleksi baris atau observasi berdasarkan nilai.

library(dplyr)
SumateraUp1 <- dataLength  %>%
    filter(Keterangan > 'Riau') %>%
    select('Keterangan', 'Tahun', 'Kasus')
SumateraUp1 
## # A tibble: 44 × 3
##    Keterangan Tahun   Kasus
##    <chr>      <chr>   <dbl>
##  1 Sumatera   2011   57900.
##  2 Sumatera   2012   65911.
##  3 Sumatera   2013   98369.
##  4 Sumatera   2014   86024.
##  5 Sumatera   2015   86549.
##  6 Sumatera   2016   97764.
##  7 Sumatera   2017  103748.
##  8 Sumatera   2018  117495.
##  9 Sumatera   2019  133762.
## 10 Sumatera   2020  109345.
## # … with 34 more rows
SumateraUp2 <- dataLength %>%
  filter(Keterangan <= 'Aceh', Tahun <= '2019') %>%
 select('Keterangan', 'Tahun', 'Kasus')
SumateraUp2
## # A tibble: 9 × 3
##   Keterangan Tahun  Kasus
##   <chr>      <chr>  <dbl>
## 1 Aceh       2011   2308.
## 2 Aceh       2012   2620.
## 3 Aceh       2013  36337.
## 4 Aceh       2014   4567.
## 5 Aceh       2015   4710.
## 6 Aceh       2016   5775.
## 7 Aceh       2017   5514.
## 8 Aceh       2018   5799.
## 9 Aceh       2019   7509.

pivot_wider()

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

SumateraID <- dataLength %>% 
  pivot_wider(names_from = "Tahun", 
                     values_from = "Kasus")
SumateraID
## # A tibble: 11 × 12
##    Keterangan     `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##    <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
##  1 Sumatera       57900. 65911. 98369. 8.60e4 86549. 97764. 1.04e5 1.17e5 1.34e5
##  2 Aceh            2308.  2620. 36337. 4.57e3  4710.  5775. 5.51e3 5.80e3 7.51e3
##  3 Sumatera Utara 23238. 25981. 18120. 3.05e4 30254. 34427. 3.56e4 4.18e4 4.71e4
##  4 Sumatera Barat  9385. 11192. 14056. 1.41e4 13309. 14078. 1.53e4 1.51e4 1.47e4
##  5 Riau            3012.  4447.  8933. 6.36e3  7156.  8211. 8.55e3 1.07e4 1.09e4
##  6 Kep. Riau       1426.  2236.  3378. 2.56e3  3218.  4317. 4.41e3 5.13e3 6.08e3
##  7 Jambi           1868.  2138.  3047. 5.17e3  4978.  4398. 4.40e3 5.66e3 6.49e3
##  8 Sumatera Sela…  7820.  9126.  8647. 1.00e4 10797. 12752. 1.31e4 1.43e4 1.48e4
##  9 Bengkulu        1153.  1201.  2378. 3.26e3  2791.  2889. 3.62e3 4.15e3 5.79e3
## 10 Lampung         7690.  6969.  3474. 9.45e3  8160.  9373. 1.21e4 1.34e4 1.70e4
## 11 Kep. Bangka B…     0      0      0  1.37e1  1177.  1544. 1.16e3 1.52e3 3.27e3
## # … 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