装满平日仅载体(Fill a vector with weekdays only)

2019-07-20 18:06发布

我所知道的起始日期start和最后一天maturity 。 我如何填写的日期向量不考虑周末的日期,账号? 举例来说,假设:

> start = as.Date("2013-02-28");
> maturity = as.Date("2013-03-07");

我想获得以下向量的结果:

results
[1] "2013-03-01" "2013-03-04" "2013-03-05" "2013-03-06" "2013-03-07"



> start = as.Date("2013-02-28");
> maturity = as.Date("2013-03-07");
> x <- seq(start,maturity,by = 1)
> x
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05"
[7] "2013-03-06" "2013-03-07"
> x <- x[!weekdays(x) %in% c('Saturday','Sunday')]
> x
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05"
[7] "2013-03-06" "2013-03-07"

同样的结果...?

Answer 1:

大概有十亿的方式有多种,从多个包功能做到这一点。 但是,我首先想到的是简单地做一个序列,然后去除周末:

x <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1)
x <- x[!weekdays(x) %in% c('Saturday','Sunday')]

这个答案只适用以英文为基础的系统。 例如,在一个法文版,“星期六”和“星期日”必须被翻译成“samedi”和“dimanche”



Answer 2:

这比@joran答案:)更少的人力,但它是根据无本地时间

dd <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1)
dd[! (as.POSIXlt(dd)$wd %in% c(0,1))]

PS:另一种选择,是将之前设置当地人weekdays

tt <- Sys.getlocale('LC_TIME')
Sys.setlocale('LC_TIME','ENGLISH')
dd <- dd[!weekdays(x) %in% c('Saturday','Sunday')]
Sys.setlocale('LC_TIME',tt)


文章来源: Fill a vector with weekdays only
标签: r date vector