如何从下一个周日到周日结束一周

时间:2017-06-16 17:21:56

标签: r lubridate

我知道lubridate有一个函数ceiling_date,但它提供了从给定日期开始的下周六结束的一周。如何更改它以获得下周日结束的一周呢?

> ceiling_date(as.Date('2017-06-16'), 'week')
[1] "2017-06-17 20:00:00 EDT"

1 个答案:

答案 0 :(得分:0)

我认为这可能是此处列出的ceiling_date错误:https://github.com/tidyverse/lubridate/issues/479

一种解决方法可能是抓住年/周,然后轮到周日:

as.Date(paste0(year('2017-06-16'), week('2017-06-16') + ifelse(wday('2017-06-16')==1,0,1), 7), format =  "%Y%U%u")
#[1] "2017-06-18"

来自?strptime

  • %Y是世纪的一年(即2017年)
  • %U是十进制的一年中的一周
  • %u是1-7周的一周(1周一)

因此,我们需要将我们的周移至1(因此为+1),然后我们将该日设置为星期日7