2014-10-31 22 views
0

日期我有每天頻率分別建立時間序列對象:獲取的時間序列對象

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

我怎樣才能拿回日期從這個時間序列對象POSIXct矢量("2014-01-01 UTC" ......)?

+0

'ts'對日期無效。建議您使用動物園或xts。 '庫(動物園); z < - zooreg(1:10,as.Date(「2014-01-01」))' – 2014-10-31 13:14:18

+0

不幸的是ts對象已經存在。所以我尋找一個處理ts的解決方案。 – user2030503 2014-10-31 13:18:20

+1

如果你知道'my.timeseries'包含從一年開始的連續日期,那麼這將會把它轉換成帶有Date類索引的zooreg系列:'zooreg(coredata(my.timeseries),as.Date(as .yearmon(start(my.timeseries))))' – 2014-10-31 13:33:49

回答

2

這裏有一個潛在的方法。我不確定是否應該這樣做,但它似乎工作。

與您現有的時間序列,嘗試

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.格羅騰迪克,這裏是一個更通用的解決方案

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

我強烈建議你使用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) 

讓我們知道,如果幫助:)

羅曼

+0

Thx。 \t \t 不幸的是ts對象已經存在。所以我尋找一個處理ts的解決方案。 – user2030503 2014-10-31 15:32:48

+0

Woops。對不起,我沒有閱讀關於此的第一條評論。 – Romain 2014-10-31 15:44:00