如何从时间序列中提取日期

36

我怎样从时间序列中提取日期? 这是一个时间序列:

x = seq (1, 768)
myts <- ts(x, start=1982, frequency=24)

最初我需要创建一个向量来保存rts函数的日期/时间数据,观测开始于1982年,每月进行2次测量,一直持续到2013年。

3个回答

56

尝试:

time(myts)

或者也许是:

library(zoo)
as.yearmon(time(myts))

如果频率=12,则可以使用zoo :: as.Date。 x = seq(1,768); myts <- ts(x,start = 1982,frequency = 12); zoo :: as.Date(myts) - Renhuai

12

如果您需要 POSIX* 对象——在处理半月数据时可能不适用,但在处理更高时间分辨率时可能会派上用场——您也可以使用lubridate中的 date_decimal

library(lubridate)
mts <- as.numeric(time(myts))

## 'POSIXct, POSIXt' object
tms <- date_decimal(mts)

2
你可以使用以下函数。输入是r中的时间序列。输出是包含从开始时间到结束时间的所有时间数组的列表。
通过这个列表的帮助,你可以很方便地使用window()函数来截取时间序列。
getTStime <- function(ats){
  start <- start(ats)
  end <- end(ats)
  time <- list()
  time[[1]] <- start
  m <- 2
  while(!(identical(start, end))){
    start[2] <- start[2] + 1
    if (start[2]==13){
      start[1] <- start[1] + 1
      start[2] <- 1
    }
    time[[m]] <- start
    m <- m + 1
  }
  return(time)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接