似乎互联网还没有为R回答这个问题:
如果我有约会。说三月二十日:as.Date(“2015-03-20”) 如何在R中获得前一个星期天? 即,在上面的例子中,as.Date(“2015-03-15”)。
答案 0 :(得分:17)
通过rubridate文档阅读,我找到了答案。
library(lubridate)
date <- as.Date("2015-03-20")
previous_sunday <- floor_date(date, "week")
要获取上一个星期一,星期日等,只需添加所需的天数: (星期一)
day(date)<-day(date)+1
如果它大于原始日期,则并减去7天。
答案 1 :(得分:8)
这是一种方法:
d <- as.Date("2015-03-18")
prev.days <- seq(d-6,d,by='day')
prev.days[weekdays(prev.days)=='Sunday']
# [1] "2015-03-15"
答案 2 :(得分:4)
一种方式:
d<-as.Date("2015-03-20")
d-as.POSIXlt(d)$wday
## [1] "2015-03-15"
那里也有更黑客的方式,使用日期表示为整数的事实,第0天是星期四(1970年1月1日):
d-((as.numeric(d)+4)%% 7)
## [1] "2015-03-15"
答案 3 :(得分:4)
cut(date_var, breaks='week', start.on.monday = F)
这对我有用。它在基础r中可用,并且必然更快。 休息可用于查找 日,周,月,季,年的开始。
读 ?cut&amp; ?cut.Date
Sys.Date()
[1]“2017-12-23”
cut(Sys.Date(), breaks = 'week', start.on.monday = F)
[1] 2017-12-17 级别:2017-12-17
cut(Sys.Date(), breaks = 'month')
[1] 2017-12-01 级别:2017-12-01
cut(Sys.Date(), breaks = 'quarter')
[1] 2017-10-01 级别:2017-10-01
cut(Sys.Date(), breaks = 'year')
[1] 2017-01-01 级别:2017-01-01