我正在尝试使用校准周期进行回归模式。为此,我想将我的时间序列分成 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