【发布时间】:2015-08-06 21:50:51
【问题描述】:
我有以下data.frame:
df <- data.frame(timestamp=c(1428319770511, 1428319797218, 1428319798182, 1428319803327, 1428319808478),
session=c("A","A","B","A","A"))
我想将此数据框转换为时间序列,并在短于一秒的时间窗口上工作。我已经尝试过zoo 和xts,但我发现很难将纪元时间表示为日期。
这是我已经尝试过的:
df$date<-strptime(as.POSIXct(df$timestamp, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
返回 NA。调用它:
df$date<-strptime(as.POSIXct(df$timestamp/1000, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
有效,但不包含毫秒数据。
我也尝试过使用options(digits.secs=3),但没有成功。
我想我在这里遇到了 R 对毫秒的处理的小问题,但任何想法都将不胜感激。
---编辑---
好的,感谢 Joshua 的回答和 @Dirk Eddelbuettel 在Convert UNIX epoch to Date object in R 的评论,除以 1000 不会截断数据。所以这行得通:
options(digits.secs = 3)
df$date<-as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
返回:
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
【问题讨论】:
标签: r time-series xts zoo