R: Как извлечь даты из временного ряда

Как я могу извлечь даты из серии раз? Вот временной ряд:

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

Изначально мне нужно было создать данные о дате/времени переноса вектора для функции rts. Наблюдения начнутся в 1982 году с 2 измерениями в месяц, идущими до 2013 года.

Ответы

Ответ 1

Try:

time(myts)

или, возможно:

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

Ответ 2

Если вам нужны объекты POSIX*, которые, вероятно, не подходят при работе с полумесячными данными, но могут пригодиться при работе с более высокими временными разрешениями - вы также можете использовать date_decimal от lubridate.

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

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

Ответ 3

Вы можете использовать следующую функцию. Ввод временного ряда в 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)
}

Ответ 4

Исходная проблема, заданная в вопросе, уникальна, потому что она содержит нестандартную выборку, то есть 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)