【发布时间】:2016-03-09 02:06:22
【问题描述】:
我的目标是从数据框中获取startdate 观察结果,将其与日历进行比较,如果日期不是营业日期(假日或周末),则将其推回,直到它成为有效的营业日.我会为enddate 做同样的事情,但会向前推进。
例如,我的数据如下所示:
tickers startDate endDate
1 GOOGL 2016-01-31 2016-02-02
2 GOOGL 2015-10-21 2015-10-23
3 GOOGL 2015-07-15 2015-07-17
4 GOOGL 2015-04-22 2015-04-24
5 GOOGL 2015-01-28 2015-01-30
6 GOOGL 2014-10-15 2014-10-17
还有我的日历信息:
Date Weekday Business Event
1 2001-01-01 Monday FALSE New Years Day
2 2001-01-02 Tuesday TRUE <NA>
3 2001-01-03 Wednesday TRUE <NA>
4 2001-01-04 Thursday TRUE <NA>
5 2001-01-05 Friday TRUE <NA>
6 2001-01-06 Saturday FALSE <NA>
所以我使用 dplyr 以下列方式实现这一目标:
for(i in 1:10){
stocks1 <- stocks1 %>%
mutate(startDate = as.Date(ifelse(startDate %in% dates[dates$Business==F,]$Date, startDate - 1, startDate))) %>%
mutate(endDate = as.Date(ifelse(endDate %in% dates[dates$Business==F,]$Date, endDate + 1, endDate)))
}
我想一定有更优雅的方式来做到这一点......有什么想法吗?理想情况下使用dplyr,因为我正在尝试掌握这个包:)
谢谢!
【问题讨论】: