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 : 210605110035

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)
## Warning: package 'readxl' was built under R version 4.1.2
InflowJawa <- read_excel(path = "C:/Users/ASUS/Documents/excel_algebra/InflowJawa2.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.6     v dplyr   1.0.8
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.1.2
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'readr' was built under R version 4.1.3
## Warning: package 'purrr' was built under R version 4.1.3
## Warning: package 'dplyr' was built under R version 4.1.3
## Warning: package 'forcats' 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()

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 > 'Yogyakarta') %>%
    select('Keterangan', 'Tahun', 'Kasus')
JawaUp1 
## # A tibble: 0 x 3
## # ... with 3 variables: Keterangan <chr>, Tahun <chr>, Kasus <dbl>
JawaUp2 <- dataLength %>%
  filter(Keterangan <= 'Jawa Barat', Tahun <= '2019') %>%
 select('Keterangan', 'Tahun', 'Kasus')
JawaUp2
## # A tibble: 27 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 17 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().

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>

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