Mam następujący data.frame:Konwersja ramka danych ze znaczników czasu epoki do szeregów czasowych z milisekund w R
df <- data.frame(timestamp=c(1428319770511, 1428319797218, 1428319798182, 1428319803327, 1428319808478),
session=c("A","A","B","A","A"))
chciałbym przekształcić tę ramkę danych w szeregach czasowych i czasu pracy na oknach krótszy niż jedna sekunda. Próbowałem już zoo
i xts
, ale trudno było reprezentować czasy epok jako daty. Oto, co już próbowałem:
df$date<-strptime(as.POSIXct(df$timestamp, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
które zwracają NAS. Nazywając to:
df$date<-strptime(as.POSIXct(df$timestamp/1000, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Działa, ale nie zawiera danych milisekund. Próbowałem również grać z options(digits.secs=3)
, ale bez powodzenia.
Domyślam się, że uderzam w małą ścianę, gdy R zajmuje milisekundy, ale wszelkie pomysły będą mile widziane.
--- EDIT ---
Ok, dzięki za odpowiedź Jozuego i komentarz tutaj Convert UNIX epoch to Date object in R przez @Dirk Eddelbuettel, dzieląc przez 1000 nie obciąć dane. Tak to działa:
options(digits.secs = 3)
df$date<-as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
która zwraca:
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