2016-10-15 3 views
0

Je me bats avec certaines fonctionnalités de base de xts. Je suis en train de lire un fichier de données CSV et d'essayer de tracer les données avec la fonction candleChart() (à partir du paquet quantmod). Je rencontre quelques problèmes après la transformation de mon data.frame en un objet xts en raison de l'heure d'été. Fondamentalement, les données sont OHLC de la paire de devises EUR/USD dans une minute-timeframe. Cette année, l'heure d'été a été mise en place le 27 mars 2016 entre 02h00 et 03h00. Après avoir converti le data.frame en xts, les 60 index de cette fenêtre de temps sont manquants (NA).Convertir des données en xts: Problème avec l'heure d'été et les NA

Ci-dessous vous trouverez le code. J'ai joint le data file aussi. Y at-il un moyen facile de réparer les données sans perdre quoi que ce soit?

forexData <- read.csv(fileName, sep = ".", dec = ",") 
#View(forexData) 

dataSerie <- xts(forexData[,2:6], order.by=as.POSIXct(forexData[,1], tz="")) 

# Checking if data index contains "NA"s and save index where NA are located 
index_NA <- which(is.na(index(dataSerie))) 

if(length(index_NA) == 0) { 
    candleChart(dataSerie, name="First Plot", subset="last 3 weeks", bar.type="ohlc") 

} else { 
    print("!!! Warning !!! - Data index contains NAs") 
} 
+0

On dirait que vos décimales sont mis en forme par une virgule (','); alors ajoutez 'dec =", "' à votre appel 'read.csv':' forexData <- read.csv (fileName, sep = ".", dec = ",") '. Ce n'est peut-être pas votre seul problème, mais c'est un bon début. – Abdou

+0

Thx beaucoup Abdou, C'était en fait le problème, .. je l'ai figuré et mettre la déc à "," tout s'est bien passé ... mais je suis coincé au prochain problème: – sisqokc

+0

S'il vous plaît ajouter l'erreur de la prochaine problème à votre question, de sorte que quelqu'un puisse être en mesure d'aider. – Abdou

Répondre

0

L'en-tête de votre CSV est:

TimeUTC.Open.High.Low.Close.Volume 

Ainsi, la colonne d'horodatage semble être en UTC, qui n'a pas le temps d'été. Donc, vous devez spécifier le fuseau horaire UTC comme dans votre appel à as.POSIXct:

dataSerie <- xts(forexData[,2:6], order.by=as.POSIXct(forexData[,1], tz="UTC"))