R 如何创建季节性虚拟对象
我想用一个季节性模型来拟合电价的线性模型。因此,“DK.days”包含10年内每年的天数R 如何创建季节性虚拟对象,r,time-series,dummy-variable,R,Time Series,Dummy Variable,我想用一个季节性模型来拟合电价的线性模型。因此,“DK.days”包含10年内每年的天数 head(DK.days) [1] "2007-01-01" "2007-01-02" "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-06" 这是代码的其余部分 month <- as.numeric(format(DK.days, "%m")) MD <- t(sapply(month, "==", c(1:12,0)))+0 MD <
head(DK.days)
[1] "2007-01-01" "2007-01-02" "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-06"
这是代码的其余部分
month <- as.numeric(format(DK.days, "%m"))
MD <- t(sapply(month, "==", c(1:12,0)))+0
MD <- MD[,-13]
dimnames(MD) <- list(NULL, c("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Noe", "Dec"))
> head(MD)
Jan Feb Mar Apr May June July Aug Sep Oct Noe Dec
[1,] 1 0 0 0 0 0 0 0 0 0 0 0
[2,] 1 0 0 0 0 0 0 0 0 0 0 0
month您可以使用zoo
软件包:
library(zoo)
yq <- as.yearqtr(as.yearmon(DK.days) + 1/12) #+1/12 to shift one month
DK.seasons <- factor(format(yq, "%q"), levels = 1:4,
labels = c("winter", "spring", "summer", "fall"))
library(mlr)
DK.final <- cbind(DK.final,createDummyFeatures(DK.final[,2], cols = "var"))
生成虚拟变量:
如果希望列作为每个季节的虚拟变量,请使用mlr
package:
library(zoo)
yq <- as.yearqtr(as.yearmon(DK.days) + 1/12) #+1/12 to shift one month
DK.seasons <- factor(format(yq, "%q"), levels = 1:4,
labels = c("winter", "spring", "summer", "fall"))
library(mlr)
DK.final <- cbind(DK.final,createDummyFeatures(DK.final[,2], cols = "var"))
请阅读,以便我可以在您的数据上测试解决方案;嘿,谢谢你的回答,但是我需要一个有四列的矩阵-每个季度一列。矩阵应该包括1和0-1,如果日期属于季节-例如在“01-01-2007”行中,我需要在第一列(“冬季”)中有一个,在其他三列中有零。如果您需要有关数据集的其他信息,请告诉我应该提供什么。
library(mlr)
DK.final <- cbind(DK.final,createDummyFeatures(DK.final[,2], cols = "var"))
> DK.final
# DK.days DK.seasons winter spring summer fall
# 1 2016-01-01 winter 1 0 0 0
# 2 2016-02-29 winter 1 0 0 0
# 3 2016-03-02 spring 0 1 0 0
# 4 2016-04-03 spring 0 1 0 0
# 5 2016-05-04 spring 0 1 0 0
# 6 2016-06-05 summer 0 0 1 0
# 7 2016-07-06 summer 0 0 1 0
# 8 2016-08-10 summer 0 0 1 0
# 9 2016-09-06 fall 0 0 0 1
# 10 2016-10-06 fall 0 0 0 1
# 11 2016-11-06 fall 0 0 0 1
# 12 2016-12-06 winter 1 0 0 0