我知道lubridate
有一个函数ceiling_date
,但它提供了从给定日期开始的下周六结束的一周。如何更改它以获得下周日结束的一周呢?
> ceiling_date(as.Date('2017-06-16'), 'week')
[1] "2017-06-17 20:00:00 EDT"
答案 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
。