Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从日期列创建假日的指标变量_R_Variables_Dataframe - Fatal编程技术网

R 从日期列创建假日的指标变量

R 从日期列创建假日的指标变量,r,variables,dataframe,R,Variables,Dataframe,我还是一个白痴新手,所以如果这是一个简单的问题,请原谅我,但我在stackoverflow上找不到答案。我想为美国的每个主要假日创建一组指标变量,只需将一个函数应用于我的日期字段,该字段可以检测哪些日子是假日,然后我可以使用US Model.matrix等。。转换为一组指标变量。 例如,我有从2012年1月1日到2013年9月15日的每日数据,我想为复活节创建一个可变指标 我目前正在使用timeDate包向其函数Easter()传递一年来查找日期。然后,我在下面的代码中键入日期,以创建一个指示符

我还是一个白痴新手,所以如果这是一个简单的问题,请原谅我,但我在stackoverflow上找不到答案。我想为美国的每个主要假日创建一组指标变量,只需将一个函数应用于我的日期字段,该字段可以检测哪些日子是假日,然后我可以使用US Model.matrix等。。转换为一组指标变量。
例如,我有从2012年1月1日到2013年9月15日的每日数据,我想为复活节创建一个可变指标

我目前正在使用
timeDate
包向其函数
Easter()
传递一年来查找日期。然后,我在下面的代码中键入日期,以创建一个指示符变量

Easter(2012)
EasterInd2012<-as.numeric(DATASET$Date=="2012-04-08")
复活节(2012)
EasterInd2012获取普通假日指标变量的最简单方法是创建您感兴趣的所有假日的向量,然后在数据框中匹配这些日期。像这样的方法应该会奏效:

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)
要获得每个假期的具体指标,您需要一次完成一项:

EasterInd2012 <- ifelse(DATASET$Date==as.Date(Easter(2012)), 1, 0)
LaborDay2012 <- ifelse(DATASET$Date==as.Date(UsLaborDay(2012)), 1, 0)
# etc.

EasterInd2012您可以通过编写一个带有
apply
函数之一的循环来提高特定指标分配的效率,但随后您需要定义变量名和日期,这与像这样一次只执行一行同样多的工作。因此,从计算上讲,这不是最有效的,但它是有效的。
EasterInd2012 <- ifelse(DATASET$Date==as.Date(Easter(2012)), 1, 0)
LaborDay2012 <- ifelse(DATASET$Date==as.Date(UsLaborDay(2012)), 1, 0)
# etc.