Ho la seguente data.frame:Converti con timestamp epoca di serie temporali con millisecondi in R
df <- data.frame(timestamp=c(1428319770511, 1428319797218, 1428319798182, 1428319803327, 1428319808478),
session=c("A","A","B","A","A"))
mi piacerebbe convertire questo frame di dati per una serie temporale e lavorare su Ora di Windows più corto di un secondo. Ho già provato zoo
e xts
, ma ho trovato difficile rappresentare le epoche volte come date. Ecco quello che ho già provato:
df$date<-strptime(as.POSIXct(df$timestamp, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
che restituiscono AN. Chiamando questo:
df$date<-strptime(as.POSIXct(df$timestamp/1000, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Funziona ma non contiene i dati di millisecondi. Ho anche provato a giocare con options(digits.secs=3)
ma senza fortuna.
Immagino di dover colpire un piccolo muro qui con la gestione di R di millisecondi ma qualsiasi idea sarebbe molto apprezzata.
--- EDIT ---
Ok, grazie alla risposta di Giosuè e un commento qui Convert UNIX epoch to Date object in R da @Dirk Eddelbuettel, dividendo per 1000 non tronca i dati. Quindi, questo funziona:
options(digits.secs = 3)
df$date<-as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
che restituisce:
timestamp session date
1428319770511 A 2015-04-06 14:29:30.510
1428319797218 A 2015-04-06 14:29:57.217
1428319798182 B 2015-04-06 14:29:58.181
1428319803327 A 2015-04-06 14:30:03.326
1428319808478 A 2015-04-06 14:30:08.477