Как вычесть n рабочих дней с сегодняшнего дня, чтобы получить прошедшую дату с приглашением пользователя? - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь посчитать n рабочих дней назад с сегодняшнего дня, чтобы получить конкретную дату.

Я хотел бы получить пользовательский ввод с днями для обратного отсчета и позволить системе рассчитать эту дату.

Допустим, я хотел бы посчитать 100 (рабочих дней) в обратном направлении с сегодняшнего дня.

A <- readline(prompt = "How many days backwards do you want to count? ")

#user input: 100

Date to be calculated <- Today date-A (format yyyy/mm/dd)

#Date to be calculated = 2018-03-02 

Затем я буду использовать дату, чтобы получить некоторые значения набора данных, сохраненных на эту дату.

Любые комментарии будут высоко оценены

1 Ответ

0 голосов
/ 10 июня 2018

Можно написать рекурсивную функцию для вычитания будних дней.Функцию chron::is.weekend можно использовать для определения, является ли день working-day.Другой вариант выбора weekend/working-day может основываться на дне, начинающемся с S, как предлагает @ Ryan.

library(chron)
substractWorkingDays <- function(x, n){
  v <- seq(x, x -n, by="-1 day")
  workingDays <- sum(!is.weekend(v[-1])) #One can check day name start with `S`
  if(workingDays == n){
    return(v[length(v)])
  }else{
    substractWorkingDays(v[length(v)], n-workingDays)
  }
}

#Testing it

substractWorkingDays(as.Date("2018-06-10"), 5)
#[1] "2018-06-04"
substractWorkingDays(as.Date("2018-06-10"), 10)
#[1] "2018-05-28"
substractWorkingDays(as.Date("2018-06-10"), 12)
#[1] "2018-05-24"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...