Langsung ke konten utama

Data Manipulation: Mengubah Data Harian menjadi Data Bulanan, Triwulanan, dan Tahunan dengan R

Mengubah data harian menjadi data periode bulanan, triwulanan, dan tahunan

Halo teman-teman, berjumpa kembali dengan blog sederhana ini. Setelah membahas mengenai visualisasi menggunakan Gephi, kita coba balik lagi menggunakan R dan membahas visualisasi data runtun waktu (time series data).

Data runtun waktu atau time series merupakan salah satu jenis data yang paling diminati banyak penelitian. Sebab, dengan menggunakan data runtun waktu, selain kita dapat mempelajari pola sebuah data, kita dapat pula melakukan prediksi atau peramalan beberapa waktu ke depan atau beberapa waktu ke belakang menggunakan pola dari data tersebut. Kendati demikian, dalam pemodelan menggunakan runtun waktu atau time series ini biasa rentan sekali terganggu oleh asumsi autokorelasi atau korelasi serial antar residual antar waktu amatan.

Kali ini kita akan mencoba belajar bagaimana melakukan manipulasi data atau istilah kerennya data manipulation menggunakan 2 jenis package yang kalau di Python, mirip dengan package pandas, yaitu package lubridate dan dplyr. Inti perbedaan dari kedua package ini, kalau lubridate adalah package untuk manipulasi pada aspek waktu atau periode dari sebuah data, sedangkan package dplyr biasanya digunakan untuk melakukan manipulasi salah satunya pada aspek agregasi data atau pivot data.

Data manipulation merupakan sebuah proses mengubah struktur data agar lebih mudah dibaca dan lebih terorganisir untuk disajikan atau digunakan pada proses berikutnya

Untuk praktikum menggunakan dua package ini, saya telah menyiapkan data periode harian jumlah penerbangan komersil yang tercatat secara realtime di Bandar Udara Juanda Surabaya di Sidoarjo Jawa Timur selama 2019. Data ini saya peroleh dengan menggunakan teknik web scraping menggunakan R. Bagi teman-teman yang ingin belajar mengenai web scraping dengan R dapat mengunjungi tautan berikut. Adapun data yang saya siapkan tersebut bisa teman-teman unduh terlebih dahulu pada tautan berikut dan setelah itu kita akan melakukan data manipulation menggunakan beberapa code berikut ini:

#Instal dan Aktivasi package
library(lubridate)
library(dplyr)
#Import data
library(readxl)
terbang <- read_excel("C:/Users/Joko Ade/Downloads/terbang.xlsx")
head(terbang, 10)
## # A tibble: 10 x 2
##    periode             penerbangan
##    <dttm>                    <dbl>
##  1 2019-01-01 00:00:00      128717
##  2 2019-01-02 00:00:00      162303
##  3 2019-01-03 00:00:00      169310
##  4 2019-01-04 00:00:00      173386
##  5 2019-01-05 00:00:00      161288
##  6 2019-01-06 00:00:00      156172
##  7 2019-01-07 00:00:00      163601
##  8 2019-01-08 00:00:00      163535
##  9 2019-01-09 00:00:00      167080
## 10 2019-01-10 00:00:00      172335
#Melihat Struktur data awal
str(terbang)
## tibble [365 x 2] (S3: tbl_df/tbl/data.frame)
##  $ periode    : POSIXct[1:365], format: "2019-01-01" "2019-01-02" "2019-01-03" ...
##  $ penerbangan: num [1:365] 128717 162303 169310 173386 161288 ...
#Mengubah tipe periode menjadi date
terbang$periode <- as.Date(terbang$periode)

#Melihat hasil ubah struktur
str(terbang)
## tibble [365 x 2] (S3: tbl_df/tbl/data.frame)
##  $ periode    : Date[1:365], format: "2019-01-01" "2019-01-02" "2019-01-03" ...
##  $ penerbangan: num [1:365] 128717 162303 169310 173386 161288 ...
#Deskriptif data
summary(terbang)
##     periode            penerbangan    
##  Min.   :2019-01-01   Min.   :120212  
##  1st Qu.:2019-04-02   1st Qu.:175300  
##  Median :2019-07-02   Median :190876  
##  Mean   :2019-07-02   Mean   :189019  
##  3rd Qu.:2019-10-01   3rd Qu.:203062  
##  Max.   :2019-12-31   Max.   :230409
#Menampilkan Histogram 
hist(terbang$penerbangan, main = "Histogram Sebaran Jumlah Penerbangan \nBandar Udara Juanda Selama 2019",
     xlab = "Jumlah Penerbangan", ylab = "Frekuensi")
plot of chunk unnamed-chunk-4
Histogram

#Plot data harian
plot(ts(terbang$penerbangan, start = 2019, frequency = 365),
     main = "Jumlah Penerbangan Non-Komersil Harian \nBandar Udara Juanda Selama 2019",
     ylab = "Jumlah Penerbangan", xlab = "Periode")
plot of chunk unnamed-chunk-4
Plot data harian

#Mengubah data harian menjadi data mingguan
terbang$minggu <- floor_date(terbang$periode, "week")
terbang %>%
  group_by(minggu) %>%
  summarize(jumlah = sum(penerbangan))
## # A tibble: 53 x 2
##    minggu      jumlah
##    <date>       <dbl>
##  1 2018-12-30  795004
##  2 2019-01-06 1139166
##  3 2019-01-13 1123597
##  4 2019-01-20 1150497
##  5 2019-01-27 1143284
##  6 2019-02-03 1130726
##  7 2019-02-10 1167594
##  8 2019-02-17 1188634
##  9 2019-02-24 1213346
## 10 2019-03-03 1189471
## # ... with 43 more rows
#Visualisasi data mingguan
w <- terbang %>%
  group_by(minggu) %>%
  summarize(jumlah = sum(penerbangan))
plot(ts(w$jumlah, start = 2019, frequency = 53),
     main = "Jumlah Penerbangan Non-Komersil Mingguan \nBandar Udara Juanda Selama 2019",
     ylab = "Jumlah Penerbangan", xlab = "Periode")
plot of chunk unnamed-chunk-5
Plot data mingguan

#Mengubah data harian menjadi bulanan
terbang$bulan <- floor_date(terbang$periode, "month")
terbang %>%
  group_by(bulan) %>%
  summarize(jumlah = sum(penerbangan))
## # A tibble: 12 x 2
##    bulan       jumlah
##    <date>       <dbl>
##  1 2019-01-01 5030796
##  2 2019-02-01 4687711
##  3 2019-03-01 5480727
##  4 2019-04-01 5568775
##  5 2019-05-01 5939960
##  6 2019-06-01 6141644
##  7 2019-07-01 6527801
##  8 2019-08-01 6525953
##  9 2019-09-01 6096469
## 10 2019-10-01 6005009
## 11 2019-11-01 5510504
## 12 2019-12-01 5476661
#Visualisasi data mingguan
m <- terbang %>%
  group_by(bulan) %>%
  summarize(jumlah = sum(penerbangan))
plot(ts(m$jumlah, start = 2019.1, frequency = 12),
     main = "Jumlah Penerbangan Non-Komersil Bulanan \nBandar Udara Juanda Selama 2019",
     ylab = "Jumlah Penerbangan", xlab = "Periode")
plot of chunk unnamed-chunk-6
Plot data bulanan

#Mengubah data bulanan menjadi data triwulanan
terbang %>%
  mutate(quarter = paste(quarters(periode), year(periode)), year = year(periode)) %>%
  group_by(quarter, year, .add = T) %>%
  summarise(jumlah = sum(penerbangan)) %>%
  arrange(year)
## `summarise()` has grouped output by 'quarter'. You can override using the `.groups` argument.
## # A tibble: 4 x 3
## # Groups:   quarter [4]
##   quarter  year   jumlah
##   <chr>   <dbl>    <dbl>
## 1 Q1 2019  2019 15199234
## 2 Q2 2019  2019 17650379
## 3 Q3 2019  2019 19150223
## 4 Q4 2019  2019 16992174
#Visualisasi data
x <- terbang %>%
  mutate(triwulan = paste(quarters(periode), year(periode)), tahun = year(periode)) %>%
  group_by(triwulan, tahun, .add = T) %>%
  summarise(jumlah = sum(penerbangan)) %>%
  arrange(tahun)
## `summarise()` has grouped output by 'triwulan'. You can override using the `.groups` argument.
x[-2]
## # A tibble: 4 x 2
## # Groups:   triwulan [4]
##   triwulan   jumlah
##   <chr>       <dbl>
## 1 Q1 2019  15199234
## 2 Q2 2019  17650379
## 3 Q3 2019  19150223
## 4 Q4 2019  16992174
plot(ts(x$jumlah, start = 2020, frequency = 4), type = "l", col = "blue",
     main = "Jumlah Penerbangan Non-Komersil Triwulanan \nBandar Udara Juanda Selama 2019",
     ylab = "Jumlah Penerbangan", xlab = "Periode")
plot of chunk unnamed-chunk-7
Plot data triwulanan

#Mengubah data bulanan menjadi data tahunan
terbang %>%
  mutate(tahun = paste(year(periode)), tahun = year(periode)) %>%
  group_by(tahun, .add = T) %>%
  summarise(jumlah = sum(penerbangan))
## # A tibble: 1 x 2
##   tahun   jumlah
##   <dbl>    <dbl>
## 1  2019 68992010

Demikian sekilas bagaimana kita melakukan data manipulation menggunakan R menggunakan package lubridate dan dplyr. Selamat memahami dan mempraktikkan!

Komentar

Postingan populer dari blog ini

Mencari P - Value dan Titik Kritis Uji F, Uji t, Uji Chi Square, dan Uji Z Normal dengan R

Mencari nilai p-value dan titik kritis Bagi teman-teman yang pernah mengenal statistika, pasti familier dengan istilah p-value dan titik kritis. P-value biasanya didefinisikan sebagai probabiltas atau peluang maksimal yang diamati dari hasil uji statistik, bahasa gampangnya adalah besarnya kesalahan penelitian berdasarkan uji statistik. Sebagai contoh sederhana, dari 100 orang dengan nama masing-masing dan diklasifikasikan ke dalam gender nama perempuan dan nama laki-laki, didapatkan nilai p-value uji statistiknya sebesar 0,05 atau 5%. Itu artinya, dari 100 orang, ada kemungkinan sebanyak 5 orang yang namanya salah klasifikasi. Dari namanya terdeteksi sebagai nama perempuan, padahal aktualnya yang bersangkutan bergender laki-laki. Sedangkan titik kritis atau titik uji adalah nilai batas pengujian hipotesis statistik, apakah masuk dalam wilayah tolak hipotesis, ataukah gagal menolaknya. Titik ini berkaitan erat dengan nilai p-value . Kalau biasanya kita mendapatkan kedua nilai ini da...

Cara Mendowload dan Install R serta RStudio di Windows (Step by Step)

Cara Download dan Install R serta R Studio di Windows Halo teman-teman, mohon maaf karena beberapa waktu ini, blog ini sempat vakum dari unggahan. Kali ini saya akan coba berbagai mengenai bagaimana cara mengunduh ( download ) dan menginstal ( install ) program R sekaligus R Studio khususnya di Windows. Unggahan kali ini sedikit terbalik karena semestinya saya unggah terlebih dahulu pertama kali di blog ini, namun bukan masalah, mengingat kemarin ada beberapa pihak yang meminta untuk menerangkap bagaimana tahapan mengunduh dan instalasi R dan R Studio, jadinya saya dahulukan pada unggahan ini sebelum pembahasan mengenai Data Mining , Data Science , atau bahasan Big Data kita terlampau jauh. Baik, kita akan mulai dengan bagaimana mengunduh R dan R Studio melalui mesin pencari Google. R dan R Studio ini memang beberapa waktu terakhir ini booming , apalagi dengan munculnya konsep mengenai Big Data , Data Modelling, Data Mining, dan Data Science serta Data Visualization . Sebenarnya, men...

Analisis Tipologi Klassen (Klassen Typology) dan Visualisasi Spasialnya dengan R

Tipologi Klassen dan visualisasinya dengan R Halo teman-teman, sebelumnya kita telah membahas tentang analisis Shift Share dan Location Quotient (LQ) dengan menggunakan R. Kali ini, kita akan membahas mengenai satu lagi alat analisis yang sebenarnya merupakan alat analisis tiga serangkai dari SS dan LQ, yaitu analisis Tipologi Klassen. Dalam penelitian ekonomi kewilayahan, ketiga analisis ini seringkali digunakan, baik dalam rangka melihat perkembangan dan transformasi struktur ekonomi suatu wilayah maupun melihat keunggulan kompetitif dan keunggulan komparatif wilayah satu dengan wilayah lainnya dengan mengacu wilayah referensi. Terlebih dulu, sebelum melakukan visualisasi spasial menggunakan fungsi plot(), ada baiknya kita bahas terlebih dahulu mengenai Tipologi Klassen itu sendiri. Tipologi Klassen merupakan teknik pengelompokan sektor, subsektor, lapangan usaha, atau komoditas tertentu di wilayah analisis berdasarkan pertumbuhan nilai tambah wilayah analisis terhadap nasional atau...