如何在R中找到上周日

时间:2015-03-20 16:07:30

标签: r date

似乎互联网还没有为R回答这个问题:

如果我有约会。说三月二十日:as.Date(“2015-03-20”) 如何在R中获得前一个星期天? 即,在上面的例子中,as.Date(“2015-03-15”)。

4 个答案:

答案 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