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
InflowBaliNusra <- read_excel(path = "C:/Users/ASUS/Documents/excel_algebra/InflowBaliNusra2.xlsx")
InflowBaliNusra
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... 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 <- InflowBaliNusra %>% 
  pivot_longer(!Keterangan, names_to = "Tahun", values_to = "Kasus")
dataLength 
## # A tibble: 44 x 3
##    Keterangan Tahun  Kasus
##    <chr>      <chr>  <dbl>
##  1 Bali Nusra 2011  10322.
##  2 Bali Nusra 2012  14613.
##  3 Bali Nusra 2013  17512.
##  4 Bali Nusra 2014  20807.
##  5 Bali Nusra 2015  23008.
##  6 Bali Nusra 2016  30965.
##  7 Bali Nusra 2017  30797.
##  8 Bali Nusra 2018  33866.
##  9 Bali Nusra 2019  38116.
## 10 Bali Nusra 2020  29400.
## # ... with 34 more rows

Memilih variable Daerah dan Kasus

library(dplyr)
BaliNusraUp <- select(dataLength, Keterangan, Kasus)
BaliNusraUp
## # A tibble: 44 x 2
##    Keterangan  Kasus
##    <chr>       <dbl>
##  1 Bali Nusra 10322.
##  2 Bali Nusra 14613.
##  3 Bali Nusra 17512.
##  4 Bali Nusra 20807.
##  5 Bali Nusra 23008.
##  6 Bali Nusra 30965.
##  7 Bali Nusra 30797.
##  8 Bali Nusra 33866.
##  9 Bali Nusra 38116.
## 10 Bali Nusra 29400.
## # ... with 34 more rows

Menyeleksi baris atau observasi berdasarkan nilai.

library(dplyr)
BaliNusraUp1 <- dataLength  %>%
    filter(Keterangan > 'NTB') %>%
    select('Keterangan', 'Tahun', 'Kasus')
BaliNusraUp1 
## # A tibble: 22 x 3
##    Keterangan          Tahun Kasus
##    <chr>               <chr> <dbl>
##  1 Nusa Tenggara Barat 2011  1803.
##  2 Nusa Tenggara Barat 2012  3676.
##  3 Nusa Tenggara Barat 2013  7024.
##  4 Nusa Tenggara Barat 2014  5704.
##  5 Nusa Tenggara Barat 2015  6285.
##  6 Nusa Tenggara Barat 2016  8842.
##  7 Nusa Tenggara Barat 2017  8383.
##  8 Nusa Tenggara Barat 2018  9140.
##  9 Nusa Tenggara Barat 2019  9614.
## 10 Nusa Tenggara Barat 2020  8007.
## # ... with 12 more rows
BaliNusraUp2 <- dataLength %>%
  filter(Keterangan <= 'Bali Nusra', Tahun <= '2019') %>%
 select('Keterangan', 'Tahun', 'Kasus')
BaliNusraUp2
## # A tibble: 18 x 3
##    Keterangan Tahun  Kasus
##    <chr>      <chr>  <dbl>
##  1 Bali Nusra 2011  10322.
##  2 Bali Nusra 2012  14613.
##  3 Bali Nusra 2013  17512.
##  4 Bali Nusra 2014  20807.
##  5 Bali Nusra 2015  23008.
##  6 Bali Nusra 2016  30965.
##  7 Bali Nusra 2017  30797.
##  8 Bali Nusra 2018  33866.
##  9 Bali Nusra 2019  38116.
## 10 Bali       2011   6394.
## 11 Bali       2012   8202.
## 12 Bali       2013   5066.
## 13 Bali       2014  11590.
## 14 Bali       2015  13072.
## 15 Bali       2016  17914.
## 16 Bali       2017  16962.
## 17 Bali       2018  18610.
## 18 Bali       2019  21422.

pivot_wider()

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

BaliNusraID <- dataLength %>% 
  pivot_wider(names_from = "Tahun", 
                     values_from = "Kasus")
BaliNusraID
## # A tibble: 4 x 12
##   Keterangan      `2011` `2012` `2013` `2014` `2015` `2016` `2017` `2018` `2019`
##   <chr>            <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 Bali Nusra      10322. 14613. 17512. 20807. 23008. 30965. 30797. 33866. 38116.
## 2 Bali             6394.  8202.  5066. 11590. 13072. 17914. 16962. 18610. 21422.
## 3 Nusa Tenggara ~  1803.  3676.  7024.  5704.  6285.  8842.  8383.  9140.  9614.
## 4 Nusa Tenggara ~  2125.  2735.  5422.  3512.  3651.  4210.  5452.  6116.  7080.
## # ... 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