Domanda

Come posso aggiungere un'ora a tutti gli elementi dell'indice di una serie zoo?

ho provato

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

Ma ricevo il messaggio

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

Grazie

Il mio indice è un oggetto Chron con data e ora ma ho provato con esempi più semplici e non riesco a ottenerlo

È stato utile?

Soluzione

Questo è facilmente risolvibile aggiungendo il tempo che si desidera in modo numerico:

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

oggetti Cron sono rappresentati come numeri decimali, in modo da poter utilizzare tale da calcolare. Un giorno è 1, quindi un'ora è 1/24, un minuto 1/1440 e così via. Si può vedere questo facilmente se si utilizzano i tempi di funzione. Questo vi dà i tempi dell'oggetto testato, ad esempio:

> 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

Altri suggerimenti

Converti in POSIXct, aggiungere 60 * 60 (1h in s) e poi convertire indietro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top