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

时间:2015-03-23 01:30:22

标签: r date time-series raster

如何从时间序列中提取日期? 这是一个时间序列:

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

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

4 个答案:

答案 0 :(得分:40)

尝试:

time(myts)

或者也许:

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

答案 1 :(得分:8)

如果你需要POSIX*个对象 - 这在处理半月数据时可能不合适,但在处理更高的时间分辨率时可能会派上用场 - 你也可以使用date_decimal来自 lubridate

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

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

答案 2 :(得分:1)

您可以使用以下功能。 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)
}

答案 3 :(得分:0)

问题中给出的原始问题是极其困难的,因为它包含非标准抽样,即每年24次,因此您必须使用非标准方法来提取其他人已充分涵盖的日期。对于那些偶然发现具有更多标准时间序列的问题的人来说,解决方案更简单。

x <- 1:(768/2) ## shorten the ts to reflect lower sampling rate
myts <- ts(x, start = c(1982, 1), frequency = 12) ## now one sample per month
dates <- as.Date(myts)