我是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))
答案 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
这应该可以解决问题。如果您需要为所有工作日创建虚拟,您可以使用循环来完成工作。