獲得公衆假期的指標變量最簡單的方法是創建你自己感興趣的節日的載體中,然後匹配您的數據幀的日期。像這樣的東西應該工作:
library(timeDate)
# Sample data
Date <- seq(as.Date("2012-01-01"), as.Date("2013-09-15"), by="1 day")
DATASET <- data.frame(rnorm(624), Date)
# Vector of holidays
holidays <- c(as.Date("2012-01-01"),
as.Date(Easter(2013)),
as.Date("2012-12-25"),
as.Date("2012-12-31"))
# 1 if holiday, 0 if not. Could also be a factor, like c("Yes", "No")
DATASET$holiday <- ifelse(DATASET$Date %in% holidays, 1, 0)
您可以手動輸入日期,或使用一些timeDate
的內置功能假期(該listHolidays()
功能顯示所有)。所以,你也可以構建holidays
像這樣:
holidays <- c(as.Date("2012-01-01"),
as.Date(Easter(2013)),
as.Date(USLaborDay(2012)),
as.Date(USThanksgivingDay(2012)),
as.Date(USMemorialDay(2012)),
as.Date("2012-12-25"),
as.Date("2012-12-31"))
得到具體指標的每個假期,你需要做他們一次一個:
EasterInd2012 <- ifelse(DATASET$Date==as.Date(Easter(2012)), 1, 0)
LaborDay2012 <- ifelse(DATASET$Date==as.Date(UsLaborDay(2012)), 1, 0)
# etc.
謝謝謝謝 –
你可能通過使用'apply'函數編寫一個循環來使特定指標的分配效率更高,但是之後您需要定義變量名稱和日期,這與一次一行地執行一樣多的工作。所以它不是最有效的,計算上的,但它的工作原理。 – Andrew
你可以隨時接受這個答案,如果它工作:) – Andrew