2010-08-31 6 views
2

Comment puis-je ajouter une heure à tous les éléments de l'index d'une série de zoo?Incrément d'une heure dans R, zoo

J'ai essayé

newseries <- myzooseries 
index(newseries) <- index(myzooseries)+times("1:00:00") 

mais je reçois le message

Incompatible methods ("Ops.dates", "Ops.times") for "+" 

grâce

Mon index est un objet chron avec la date et l'heure, mais je l'ai essayé avec des exemples plus simples et je ne peux pas l'obtenir

+5

Acceptez certaines réponses. Cela vous donne une réputation. – fredley

+2

Non seulement vous donne la réputation, mais indique aux autres personnes quelles réponses vous ont été utiles. –

Répondre

3

Ceci est facilement résolu en ajoutant le temps que vous voulez en mode numérique:

newseries <- myzooseries 
index(newseries) <- index(myzooseries) + 1/24 

objets chron sont représentés sous forme de nombres décimaux, de sorte que vous pouvez utiliser pour calculer. Un jour est 1, donc une heure est 1/24, une minute 1/1440 et ainsi de suite. Vous pouvez le voir facilement si vous utilisez les heures de fonction. Cela vous donne les temps de l'objet testé, par exemple:

> A <- chron(c("01/01/97","01/02/97","01/03/97")) 

> B <- A + 1/24 

> B 
[1] (01/01/97 01:00:00) (01/02/97 01:00:00) (01/03/97 01:00:00) 

> times(A) 
Time in days: 
[1] 9862 9863 9864 

> times(B) 
Time in days: 
[1] 9862.042 9863.042 9864.042 


> times(B-A) 
[1] 01:00:00 01:00:00 01:00:00 

> times(A[3]-B[1]) 
Time in days: 
[1] 1.958333 
+0

Salut. C'est ce que je faisais mais j'avais peur de l'erreur flottante introduite lors de l'utilisation des fractions. Merci – skan

+0

L'erreur flottante fera peut-être une différence d'une seconde, donc je ne m'en soucierais pas trop. –

+1

Cette forme équivalente peut également être utilisée: x + as.numeric (times ("01:00:00")) –

0

Convertir en POSIXct, ajouter 60 * 60 (1h en s) puis reconvertir.

+0

Il n'y a pas besoin de convertir quoi que ce soit. –

+1

Yup, je voudrais juste travailler avec POSIXt. – mbq

+0

@mbq: lol :-) En fait, chron a quelques fonctions très pratiques qui me manquent dans POSIX *, comme is.weekend(). –

Questions connexes