0
我正在嘗試創建一個指示器變量,它將採用數據集中的日期字段並創建一個假日變量,將實際的假日日期和1分配給週末前的1到假期。我越來越接近,但我似乎無法超越我對這個問題的思維方式。
對於完整的上下文,我已經給出了假數據集的代碼和我正在處理的用戶定義函數。我有一個與此功能相同的早期文章,但卻是一個完全不同的問題。 我的問題:如何在用戶定義函數中創建一個指標變量,該函數可以讀取假期和該假期前的週末,併爲這些天分配1,非假期/假期週末天分配1。在用戶定義函數中定義假日週末指示器變量
創建的日期響應和廣告費的基本數據集
library(timeDate)
library(lubridate)
library(forecast)
library(plyr)
# setting up some fake data
set.seed(31)
foo <- function(myHour, myDate){
rlnorm(1, meanlog=0,sdlog=1)*(myHour) + (150*myDate)
}
Hour <- 1:24
Day <-1:1080
dates <-seq(as.Date("2010-01-01"), by = "day", length.out= 1080)
myData <- expand.grid(Day, Hour)
names(myData) <- c("Date","Hour")
myData$Adspend <- apply(myData, 1, function(x) foo(x[2], x[1]))
myData$Date <-dates
myData$Demand <-(rnorm(1,mean = 0, sd=1)+.75*myData$Adspend)
myData$Hour<-as.factor(myData$Hour)
#
AddCal <-function(DF,Date,Time,Seasonal=TRUE, Holiday=TRUE, Intraday = TRUE){
#Create variables of calendar effects from Date field
DF$Date<-as.Date(DF[[Date]], format="%m/%d/%Y")
DF[[Time]]<-factor(DF[[Time]], levels = c(1:24))
monthly <- months(DF[[Date]])
dow <-weekdays(DF[[Date]])
year1<-year(DF[[Date]])
quarter<-quarters(DF[[Date]])
#
協變量
hmatx <- model.matrix(~as.factor(DF[[Time]]))[,2:24] # Matrix of hours
mmatx <- model.matrix(~as.factor(monthly))[,2:12] #Matrix of months
dmatx <- model.matrix(~as.factor(dow))[,2:7] #matrix of days of week
qmatx<-model.matrix(~as.factor(dow))[,1:3] #matrix of Quarters of the year
#
創建假日指標創建的季節性指標矩陣兩個變量都是ho liday和週末假日標記,如果在2天內
LaborWkend<-ifelse(isWeekend(as.Date(USLaborDay(year1)+2)),1,0)
運行的東西太謝謝你了 –