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)
InflowSulampua <- read_excel(path = "/Users/aisharadianto/Documents/College 2/(C) Linear Algebra/InflowSulampua2.xlsx")
InflowSulampua
## # 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 Sulampua       25056. 31011. 63774. 4.16e4 4.03e4 45737. 44126. 52672. 60202.
##  2 Sulawesi Utara  5671.  6635. 21646. 7.37e3 6.29e3  7266.  7044.  7781.  7809.
##  3 Sulawesi Teng…  1563.  1885.  1520. 3.00e3 2.59e3  2665.  2806.  3701.  4042.
##  4 Sulawesi Sela… 10593. 13702. 17770. 1.94e4 1.96e4 21043. 18803. 21894. 24749.
##  5 Sulawesi Teng…   659.   964.  6093. 2.26e3 2.38e3  3491.  3618.  3632.  4390.
##  6 Sulawesi Barat     0      0      0  0      4.92e1   536.   746.   606.   542.
##  7 Gorontalo          0      0      0  0      0          0      0   1088.  1983.
##  8 Maluku Utara     586.   633. 10273. 1.01e3 1.01e3  1259.  1339.  1530.  1924.
##  9 Maluku          1273.  1147.  4341. 1.78e3 1.79e3  2367.  2484.  3210.  4056.
## 10 Papua           4710.  6047.  2131. 6.79e3 6.10e3  6291.  6353.  8076.  9259.
## 11 Papua Barat        0      0      0  1.17e1 5.18e2   818.   933.  1153.  1448.
## # … 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 <- InflowSulampua %>% 
  pivot_longer(!Keterangan, names_to = "Tahun", values_to = "Kasus")
dataLength 
## # A tibble: 121 × 3
##    Keterangan Tahun  Kasus
##    <chr>      <chr>  <dbl>
##  1 Sulampua   2011  25056.
##  2 Sulampua   2012  31011.
##  3 Sulampua   2013  63774.
##  4 Sulampua   2014  41607.
##  5 Sulampua   2015  40309.
##  6 Sulampua   2016  45737.
##  7 Sulampua   2017  44126.
##  8 Sulampua   2018  52672.
##  9 Sulampua   2019  60202.
## 10 Sulampua   2020  52812.
## # … with 111 more rows

Memilih variable Daerah dan Kasus

library(dplyr)
SulampuaUp <- select(dataLength, Keterangan, Kasus)
SulampuaUp
## # A tibble: 121 × 2
##    Keterangan  Kasus
##    <chr>       <dbl>
##  1 Sulampua   25056.
##  2 Sulampua   31011.
##  3 Sulampua   63774.
##  4 Sulampua   41607.
##  5 Sulampua   40309.
##  6 Sulampua   45737.
##  7 Sulampua   44126.
##  8 Sulampua   52672.
##  9 Sulampua   60202.
## 10 Sulampua   52812.
## # … with 111 more rows

Menyeleksi baris atau observasi berdasarkan nilai.

library(dplyr)
SulampuaUp1 <- dataLength  %>%
    filter(Keterangan > 'Gorontalo') %>%
    select('Keterangan', 'Tahun', 'Kasus')
SulampuaUp1 
## # A tibble: 110 × 3
##    Keterangan Tahun  Kasus
##    <chr>      <chr>  <dbl>
##  1 Sulampua   2011  25056.
##  2 Sulampua   2012  31011.
##  3 Sulampua   2013  63774.
##  4 Sulampua   2014  41607.
##  5 Sulampua   2015  40309.
##  6 Sulampua   2016  45737.
##  7 Sulampua   2017  44126.
##  8 Sulampua   2018  52672.
##  9 Sulampua   2019  60202.
## 10 Sulampua   2020  52812.
## # … with 100 more rows
SulampuaUp2 <- dataLength %>%
  filter(Keterangan <= 'Papua', Tahun <= '2019') %>%
 select('Keterangan', 'Tahun', 'Kasus')
SulampuaUp2
## # A tibble: 36 × 3
##    Keterangan   Tahun Kasus
##    <chr>        <chr> <dbl>
##  1 Gorontalo    2011     0 
##  2 Gorontalo    2012     0 
##  3 Gorontalo    2013     0 
##  4 Gorontalo    2014     0 
##  5 Gorontalo    2015     0 
##  6 Gorontalo    2016     0 
##  7 Gorontalo    2017     0 
##  8 Gorontalo    2018  1088.
##  9 Gorontalo    2019  1983.
## 10 Maluku Utara 2011   586.
## # … with 26 more rows

pivot_wider()

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

SulampuaID <- dataLength %>% 
  pivot_wider(names_from = "Tahun", 
                     values_from = "Kasus")
SulampuaID
## # 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 Sulampua       25056. 31011. 63774. 4.16e4 4.03e4 45737. 44126. 52672. 60202.
##  2 Sulawesi Utara  5671.  6635. 21646. 7.37e3 6.29e3  7266.  7044.  7781.  7809.
##  3 Sulawesi Teng…  1563.  1885.  1520. 3.00e3 2.59e3  2665.  2806.  3701.  4042.
##  4 Sulawesi Sela… 10593. 13702. 17770. 1.94e4 1.96e4 21043. 18803. 21894. 24749.
##  5 Sulawesi Teng…   659.   964.  6093. 2.26e3 2.38e3  3491.  3618.  3632.  4390.
##  6 Sulawesi Barat     0      0      0  0      4.92e1   536.   746.   606.   542.
##  7 Gorontalo          0      0      0  0      0          0      0   1088.  1983.
##  8 Maluku Utara     586.   633. 10273. 1.01e3 1.01e3  1259.  1339.  1530.  1924.
##  9 Maluku          1273.  1147.  4341. 1.78e3 1.79e3  2367.  2484.  3210.  4056.
## 10 Papua           4710.  6047.  2131. 6.79e3 6.10e3  6291.  6353.  8076.  9259.
## 11 Papua Barat        0      0      0  1.17e1 5.18e2   818.   933.  1153.  1448.
## # … 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