Ответ 1
Try:
time(myts)
или, возможно:
library(zoo)
as.yearmon(time(myts))
Как я могу извлечь даты из серии раз? Вот временной ряд:
x = seq (1, 768)
myts <- ts(x, start=1982, frequency=24)
Изначально мне нужно было создать данные о дате/времени переноса вектора для функции rts
. Наблюдения начнутся в 1982 году с 2 измерениями в месяц, идущими до 2013 года.
Try:
time(myts)
или, возможно:
library(zoo)
as.yearmon(time(myts))
Если вам нужны объекты POSIX*
, которые, вероятно, не подходят при работе с полумесячными данными, но могут пригодиться при работе с более высокими временными разрешениями - вы также можете использовать date_decimal
от lubridate.
library(lubridate)
mts <- as.numeric(time(myts))
## 'POSIXct, POSIXt' object
tms <- date_decimal(mts)
Вы можете использовать следующую функцию. Ввод временного ряда в 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)
}
Исходная проблема, заданная в вопросе, уникальна, потому что она содержит нестандартную выборку, то есть 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)