根据R中的星期几创建虚拟/分类变量

时间:2015-12-09 05:41:40

标签: r

我是R的新手并试图测试" 1月效应"看星期一是否有更高的回报。

我认为这涉及创建一个虚拟变量monday,如果它是星期一,则取值1,否则取0

问题:假设monday包含日期,如何创建虚拟变量spyReturns

library(quantmod)
getSymbols('SPY', from='2015-01-01')
spyReturns <- dailyReturn(SPY)

monday <- #?? How to identify mondays?
lm(spyReturns ~ factor(monday))

2 个答案:

答案 0 :(得分:2)

strptime的帮助页面中,可以使用参数%u%w。因此,用:

monday <- as.numeric(format(index(spyReturns), "%u") %in% "1")

我们得到了

#  [1] 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
# [38] 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1
# ...

答案 1 :(得分:1)

data$weekday <- format(data$date, "%A")

# creating a dummy variable ###########
data$monday <- 0 
data[data$weekday == "Monday",]$monday <- 1 

这应该可以解决问题。如果您需要为所有工作日创建虚拟,您可以使用循环来完成工作。