我有一个数据集,其中一列包含日期。我想要找到这些date
值的星期开始日期。
我使用lubridate
中的week
函数获取星期数。例如,
week(as.Date("04/20/2017", "%m/%d/%Y"))
#Solution
[1] 16
有没有一种方法可以得到一周的起始日期而不是weeknum
?在这种情况下,我期望得到"04/16/2017"或者"04/17/2017"。如果一周从星期日或星期一开始,我并不是特别在意。
我看了这个问题,但是没有获得太多帮助。
使用 lubridate
包中的 floor_date
函数。
library("lubridate")
floor_date(as.Date("04/20/2017", "%m/%d/%Y"), unit="week")
floor_date
函数之前,请添加 library(lubridate)
。 - Steve Stratesfloor_date(x, unit = 'week', week_start = 1)
强制将周起始日设置为周一。 - r.botas.Date(format(as.Date("04/20/2017", "%m/%d/%Y"),"%Y-%W-1"),"%Y-%W-%u")
[1] "2017-04-17"
format
工作方式的问题还是仅仅是在这里使用的问题,但这并不适用于所有日期;例如,as.Date(format(as.Date("01/04/2019", "%m/%d/%Y"),"%Y-%W-1"),"%Y-%W-%u")
返回NA
,因为format(as.Date("01/04/2019", "%m/%d/%Y"),"%Y-%W-1")
返回"2019-00-1"
。 - Rookatu
round(as.IDate("04/20/2017", "%m/%d/%Y"), "week")
- Frank