R - 自动将时间序列拆分为相等的部分



我正在尝试使用校准周期进行回归模式。为此,我想将我的时间序列分成 4 个相等的部分。

library(lubridate)
date_list = seq(ymd('2000-12-01'),ymd('2018-01-28'),by='day')
date_list = date_list[which(month(date_list) %in% c(12,1,2))] 
testframe = as.data.frame(date_list)
testframe$values = seq (1, 120, length = nrow(testframe))

上面的测试框架有 18 个季节长,我想把它分成 4 个部分,即 4 个冬季的 2 个周期和 5 个冬季的 2 个周期。

我的尝试是:

library(lubridate)
aj = year(testframe[1,1])
ej = year(testframe[nrow(testframe),1])
diff = ej - aj

但是当我现在用 4 设计差异时,它是 4.5,但我需要类似 4,4,5,5 的东西并用它来提取季节。知道如何自动执行此操作吗?

你可以从这样的东西开始:

library(lubridate)
testframe$year_ <- year(testframe$date_list)
testframe$season <- getSeason(testframe$date_list)

如果您想知道getSeason()函数的起源,请阅读此内容。现在,您可以将数据集与季节分开:

by4_1 <- testframe[testframe$year_ %in% as.data.frame(table(testframe$year_))$Var1[1:4],] 
by4_2 <- testframe[testframe$year_ %in% as.data.frame(table(testframe$year_))$Var1[5:8],]
by5_1 <- testframe[testframe$year_ %in% as.data.frame(table(testframe$year_))$Var1[9:13],]
by5_2 <- testframe[testframe$year_ %in% as.data.frame(table(testframe$year_))$Var1[14:18],]

现在您可以对其进行测试,例如:

table(by4_1$year_, by4_1$season)    
Fall Winter
2000   14     17
2001   14     76
2002   14     76
2003   14     76

最新更新