Sto leggendo una tabella e contiene stringhe che descrivono i timestamp. Voglio solo convertire da stringa in un tipo datetime built-in ...comprensione di date/orari (POSIXc e POSIXct) in R
R> Q <- read.table(textConnection('
tsstring
1 "2009-09-30 10:00:00"
2 "2009-09-30 10:15:00"
3 "2009-09-30 10:35:00"
4 "2009-09-30 10:45:00"
5 "2009-09-30 11:00:00"
'), as.is=TRUE, header=TRUE)
R> ts <- strptime(Q$tsstring, "%Y-%m-%d %H:%M:%S", tz="UTC")
se provo a memorizzare la colonna datetime nella data.frame, ottengo un curioso errore:
R> Q$ts <- ts
Error in `$<-.data.frame`(`*tmp*`, "ts", value = list(sec = c(0, 0, 0, :
replacement has 9 rows, data has 5
ma se vado attraverso una rappresentazione numerica tenuto in data.frame, funziona ...
R> EPOCH <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%S", tz="UTC")
R> Q$minutes <- as.numeric(difftime(ts, EPOCH, tz="UTC"), units="mins")
R> Q$ts <- EPOCH + 60*Q$minutes
alcun aiuto per comprendere la situazione?
Un'altra cosa interessante da notare è che la lunghezza() di un oggetto POSIXlt è sempre 9. Le lunghezze dei singoli componenti, ad esempio $ min, aumenta per riflettere il numero di timestamp all'interno dell'oggetto. – Sharpie
una cosa più interessante: ho usato il comando 'per esaminare cosa succede a'POSIXlt' quando aggiungo un numero ad esso e in effetti il risultato è un'POSIXct '. questo spiega quello che stavo osservando in prima istanza. – mariotomo