День следующей недели для данного вектора дат - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь получить день следующей недели для вектора дат в R. Мой подход состоял в том, чтобы создать вектор дней недели, а затем найти дату выходного дня, которую я имею.Проблема в том, что на субботу и некоторые праздники (которых в моей стране много) я получаю день предыдущей недели, который не работает.

Это пример моей проблемы:

vecDates = as.Date(c("2011-01-11","2011-01-12","2011-01-13","2011-01-14","2011-01-17","2011-01-18",
                      "2011-01-19","2011-01-20","2011-01-21","2011-01-24")) 
testDates = as.Date(c("2011-01-22","2011-01-23"))


findInterval(testDates,vecDates)

для обеих дат правильный ответ должен быть 10, который "2011-01-24", но я получаю 9. Я хотярешение, в котором я удаляю все предыдущие даты до даты, которую я анализирую, а затем использую findInterval.Это работает, но оно не векторизовано и поэтому немного медленное, что не работает для моей реальной цели.

1 Ответ

0 голосов
/ 14 декабря 2018

Делает ли это то, что вы хотите?

 vecDates = as.Date(c("2011-01-11","2011-01-12",
                     "2011-01-13","2011-01-14",
                     "2011-01-17","2011-01-18",
                     "2011-01-19","2011-01-20",
                     "2011-01-21","2011-01-24")) 
testDates = as.Date(c("2011-01-20","2011-01-22","2011-01-23"))

get_next_biz_day <- function(testdays, bizdays){
   o <- findInterval(testdays, bizdays) + 1
   bizdays[o]
}

get_next_biz_day(testDates, vecDates)
#[1] "2011-01-21" "2011-01-24" "2011-01-24"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...