Omr*_*374 5 r time-series zoo xts
我有以下data.frame:
df <- data.frame(timestamp=c(1428319770511, 1428319797218, 1428319798182, 1428319803327, 1428319808478),
session=c("A","A","B","A","A"))
Run Code Online (Sandbox Code Playgroud)
我想将此数据框转换为时间序列,并在短于一秒的时间窗口上工作.我已经尝试过zoo和xts,但我发现很难代表大纪元的日期.这是我已经尝试过的:
df$date<-strptime(as.POSIXct(df$timestamp, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Run Code Online (Sandbox Code Playgroud)
哪个返回NAs.打电话给:
df$date<-strptime(as.POSIXct(df$timestamp/1000, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Run Code Online (Sandbox Code Playgroud)
有效,但不包含毫秒数据.我也试过玩,options(digits.secs=3)但没有运气.
我想我在这里用R的处理毫秒来打一个小墙,但任何想法都会非常感激.
- -编辑 - -
好的,感谢Joshua的回答和评论在这里将 @jirk Eddelbuettel的UNIX纪元转换为R中的Date对象,除以1000不会截断数据.这样可行:
options(digits.secs = 3)
df$date<-as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
Run Code Online (Sandbox Code Playgroud)
哪个回报:
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
Run Code Online (Sandbox Code Playgroud)
您的时间戳以毫秒为单位。您需要将它们转换为秒才能将它们与 一起使用as.POSIXct。strptime调用 POSIXct 向量是没有意义的。
另外,最好明确设置时区,而不是将其设置为""。
df$datetime <- as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
options(digits.secs=6)
df
# timestamp session datetime
# 1 1.42832e+12 A 2015-04-06 11:29:30.510
# 2 1.42832e+12 A 2015-04-06 11:29:57.217
# 3 1.42832e+12 B 2015-04-06 11:29:58.181
# 4 1.42832e+12 A 2015-04-06 11:30:03.326
# 5 1.42832e+12 A 2015-04-06 11:30:08.477
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你看不到毫秒分辨率......
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |