2017-01-30 1 views
-1

J'ai quotidiennement une série temporelle en secondes depuis le début du travail (00: 00h UTC). Comme je veux tracer des séries chronologiques d'autres données, je veux convertir des séries temporelles en secondes en dates. Toutes les données proviennent d'un fichier hdf5 lu avec le paquet rhdf5R date d'origine pour le temps en secondes

>tiempo=h5read("rams2.h5","t_coords") 
> class(tiempo) 
[1] "array" 
> head(tiempo) 
[1] 0 1800 3600 5400 7200 9000 

Alors j'ai essayé et as.POSIXct de construire une trame de données (pour une utilisation ultérieure avec ggplot2).

> temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00")) 
> class(temps) 
[1] "data.frame" 
> head(temps) 
    as.POSIXct(tiempo, origin = "1960-01-01 00:00") 
1        1960-01-01 01:00:00 
2        1960-01-01 01:30:00 
3        1960-01-01 02:00:00 
4        1960-01-01 02:30:00 
5        1960-01-01 03:00:00 
6        1960-01-01 03:30:00 

Le problème vient fromt la première valeur de "temps"

1 1960-01-01 01:00:00

mais il devrait être 1/1/1960 00:00:00 car c'est l'origine fournie et la première valeur de "tiempo" est 0. Il semble qu'une heure a été ajoutée à chaque fois.

Peut-être qu'il me manque quelque chose lors du réglage de l'origine? Ou en lisant le fichier h5? Une idée?

Merci à l'avance

PD: Je ne peux pas fournir des données par exemple que le fichier h5 est très énorme.

CODE CORRECT Merci à ottlngr réponse et Richard Telford commentaire, le problème est un problème de fuseau horaire résolu en ajoutant tz = "UTC"

temps<-as.data.frame(as.POSIXct(tiempo, origin = "1960-01-01 00:00:00",tz = "UTC")) 
+0

Je voudrais recevoir des commentaires des downvotes afin que je puisse améliorer la question, merci. – pacomet

+1

Probablement un problème de fuseau horaire: 'as.POSIXct (1, origine =" 1960-01-01 00:00 ", tz =" UTC ")' donne minuit (ce qui serait 1h CET) –

Répondre

1

Peut-être que vous devriez utiliser l'argument tz dans as.POSIXct(), mais difficile à dire sans données d'échantillon. Jetez un oeil à cette question, il pourrait vous aider: Change timezone in a POSIXct object