获取时间序列对象的日期

时间:2014-10-31 13:08:38

标签: r date time-series

我有一个单独创建的时间序列对象,每日频率:

my.timeseries= ts(data= 1:10, start= c(2014,1,1), frequency = 365.25)

如何从此时间序列对象中取回日期为POSIXct向量("2014-01-01 UTC" ...)?

2 个答案:

答案 0 :(得分:3)

这是一种潜在的方法。我不确定是否应该这样做,但它似乎有效。

根据您现有的时间序列,尝试

p <- paste(attr(my.timeseries, "tsp")[1], my.timeseries)
as.POSIXct(as.Date(p, "%Y %j"))
#  [1] "2014-01-01 UTC" "2014-01-02 UTC" "2014-01-03 UTC"
#  [4] "2014-01-04 UTC" "2014-01-05 UTC" "2014-01-06 UTC"
#  [7] "2014-01-07 UTC" "2014-01-08 UTC" "2014-01-09 UTC"
# [10] "2014-01-10 UTC"

正如G.Grothendieck在评论中所指出的,这是一个更通用的解决方案

p <- paste(start(my.timeseries), seq_along(my.timeseries))
as.Date(p, "%Y %j")
# [1] "2014-01-01" "2014-01-02" "2014-01-03" "2014-01-04"
# [5] "2014-01-05" "2014-01-06" "2014-01-07" "2014-01-08"
# [9] "2014-01-09" "2014-01-10"

as.Date可能更好地避免任何时区问题。

答案 1 :(得分:2)

我强烈建议您使用xts对象而不是ts。

这是一个复制你想要的代码:

library(xts)
my.index = seq(from = as.Date("2014-01-01"), by = "day", length.out = 10)
my.timeseries = xts(x = 1:10, order.by = my.index)
index(my.timeseries)

如果有帮助,请告诉我们:)

罗曼