我的目標是從數據框中獲取startdate
觀察值,並將其與日曆進行比較,如果日期不是商業日期(假日或週末),則將其推回到它成爲一個有效的工作日。我會爲enddate
做同樣的事情,但推動它。優化工作日支票(R)
作爲一個例子,這是我的數據是什麼樣子:
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
,因爲我試圖掌握這個包:)
謝謝!
看到http://stackoverflow.com/questions/20709654/add-1-business-day-to-date-in-r –