Я хочу создать временной ряд со всеми бизнес-датами в диапазоне:
startDate = "1990-01-01"
endDate = "1990-12-31"
Например, "1990-01-01", "1990-01-02",...
Я хочу создать временной ряд со всеми бизнес-датами в диапазоне:
startDate = "1990-01-01"
endDate = "1990-12-31"
Например, "1990-01-01", "1990-01-02",...
@csgillespie: chron
предоставляет функцию is.weekend
:
days = seq(as.Date("1990-01-01"), as.Date("1990-12-31"), by="1 day")
library(chron)
weekDays = days[!is.weekend(days)]
## let check the result with the function weekdays
weekdays(weekDays)
Кроме того, вы можете получить те же результаты без chron
с помощью format
:
isWeekend <- function(x) {format(x, '%w') %in% c(0, 6)}
weekDays2 = days[!isWeekend(days)]
Вы можете просто использовать команду seq
. Например,
##Specify you want 10 dates starting on 1990-01-01
R> seq(as.Date("1990-01-01"), length.out=10, by="1 day")
[1] "1990-01-01" "1990-01-02" "1990-01-03" "1990-01-04" "1990-01-05"
[6] "1990-01-06" "1990-01-07" "1990-01-08" "1990-01-09" "1990-01-10"
или
##Specify the start and end with increment
R> seq(as.Date("1990-01-01"), as.Date("1990-01-10"), by="1 day")
[1] "1990-01-01" "1990-01-02" "1990-01-03" "1990-01-04" "1990-01-05"
[6] "1990-01-06" "1990-01-07" "1990-01-08" "1990-01-09" "1990-01-10"
Чтобы просто получить рабочие дни, вы можете использовать библиотеку chron
:
days = seq(as.Date("1990-01-01"), as.Date("1990-12-31"), by="1 day")
library(chron)
weekDays = days[!is.weekend(days)]
Существует функция base
, называемая ?weekdays
.
startDate = "1990-01-01"
endDate = "1990-12-31"
x <- seq(as.Date(startDate), to = as.Date(endDate), by="1 day")
x[!weekdays(x) %in% c("Sunday", "Saturday")]
Но поскольку фактические имена дней будут специфичными для локали, обязательно установите их правильно.
Обратите внимание, что weekdays
является только оберткой на format(x, "%A")
. Подробнее о кодах формата см. ?strptime
.