Dalam saya memuat posting Aku bilang aku akan melihatnya perselisihan data data saya, dan postingan ini menguraikan apa yang telah saya lakukan sejak saat itu.
Masalah saya adalah saya memiliki banyak file csv yang berisi data historis dengan format tanggal dan frekuensi yang berbeda, misalnya level tick dan OHLC per jam dan harian, dan sebelumnya saya selalu kesulitan dengan ini. Namun, akhirnya saya menemukan solusi menggunakan Paket R quantmod, yang memudahkan untuk mengubah data ke frekuensi yang lebih rendah. Butuh beberapa waktu bagi saya untuk akhirnya mendapatkan apa yang saya inginkan, tetapi kotak kode di bawah ini menunjukkan yang relevan R kode untuk mengonversi OHLC per jam, yang termuat dalam satu file .csv, menjadi OHLC harian yang kemudian ditulis ke file .csv baru.
library("quantmod", lib.loc="~/R/x86_64-pc-linux-gnu-library/3.3")
price_data = read.csv( "path/to/file.csv" , header = FALSE )
price_data = xts( price_data[,2:6] , order.by = as.Date.POSIXlt( strptime( price_data[,1] , format = "%d/%m/%y %H:%M" , tz = "" ) ) )
price_data_daily = to.daily( price_data , drop.time = TRUE )
write.zoo( price_data_daily , file = "path/to/new/file.csv" , sep = "," , row.names = FALSE , col.names = FALSE )
Untuk akhirnya memperoleh potongan kode kerja yang begitu kecil, saya tidak percaya betapa banyak waktu yang harus saya habiskan untuk membaca dokumentasi dan mencarinya secara daring.
Kotak kode berikutnya menunjukkan Oktaf kode untuk memuat file .csv yang ditulis di atas ke dalam Octave
fid = fopen( 'path/to/file' , 'rt' ) ;
data = textscan( fid , '%s %f %f %f %f' , 'Delimiter' , ',' , 'CollectOutput', 1 ) ;
fclose( fid ) ;
eurusd = [ datenum( data{1} , 'yyyy-mm-dd' ) data{2} ] ;
clear data fid
Mudah-mudahan, dalam kedua kasus, memanipulasi string format “%d/%m/%y %H:%M” dan 'yyyy-mm-dd' dalam dua cuplikan kode masing-masing akan menghemat waktu yang saya habiskan.
Tautan bermanfaat yang membantu saya adalah: