如何从时间序列中提取日期? 这是一个时间序列:
x = seq (1, 768)
myts <- ts(x, start=1982, frequency=24)
最初我需要为rts
函数创建一个保存日期/时间数据的向量,观察始于1982年,每月进行2次测量,直至2013年。
答案 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)