Merge file CSV – Pertukaran data dalam format readable yaitu CSV untuk kategori data yang penyajiannya bersifat tabular. Bila semua file-file CSV tersebut perlu digabungkan menjadi satu file besar, maka file tersebut harus mempunyai jumlah dan nama kolom yang sama. Salah satunya yaitu data yang saya ambil dari untuk ringkasan saham harian.
File-file CSV yang dikumpulkan secara harian tersebut akan lebih mudah bila diolah menjadi satu-kesatuan. Merge file CSV dengan begitu banyak file didalam folder akan dibaca melalui R/RStudio ternyata berjalan sangat lamban sekali. Didalam 1 file saja terdapat 650 record x 856 file CSV = 55.640 record. Jumlah yang cukup besar.
Berikut beberapa teknik yang bisa kita gunakan untuk membaca file CSV dan menyatukannya menjadi sebuah data data frame. Mulai dari cara looping serta menggunakan function sapply.
Metode 1: Looping dan read.csv
Urusan dalam membaca file csv di R/RStudio sangat mudah karena sudah ada function built in yaitu read.csv. Berikut cara membaca file-file csv didalam sebuah folder dataset yang dilakukan secara looping.
#cara ke 1 files<-list.files(path=paste(getwd(),"dataset",sep='/'),pattern='*.csv',full.names = TRUE) stock = c() for (f in files){ dat = read.csv(f) stock = rbind(stock,dat) }
Ternyata dengan teknik diatas sangatlah berjalan lamban sehingga Merge file CSV menjadi proses yang kurang efisien. Melalui pengukuran waktu yang digunakan pakai package tictoc – https://rdrr.io/cran/tictoc/man/tic.html dihasilkan informasi sebagai berikut 105.947 sec elapsed
Metode 2: lapply
Merge file CSV yang cukup bagus yaitu dengan menghindari proses looping. Caranya yaitu menggunakan function lapply
library(dplyr) library(readr) #import and merge all three CSV files into one data frame stock <- list.files(path=paste(getwd(),"dataset",sep='/'),full.names=TRUE) %>% lapply(read.csv()) %>% bind_rows
Merge file CSV lumayan lebih cepat dengan waktu yang dibutuhkan sebesar 11.653 sec elapsed berkurang sepersepuluh dari metode 1
Methode 3: rbindlist dan fread
Metode yang ketiga yaitu menggunakan rbindlist dari package data.table dan function fread yang terkenal cepat untuk membaca file csv yang sangat besar.
multmerge = function(path){ filenames=list.files(path=path, full.names=TRUE) rbindlist(lapply(filenames, fread)) } path <- paste(getwd(),"dataset",sep='/') stock <- multmerge(path)
Merge file CSV hanya membutuhkan waktu sebesar 5.821 sec elapsed saja berkurang setengah nya dari metode 2 atau seperdua puluh dari metode 1
Gimana menurut kalian Merge file CSV, mau menggunakan metode yang mana??