如何获得一周内的所有天数?
How to get all days inside a week?
我有一个时期,我想从周一到周日分成几个星期。
使用lubridate
,我可以查询日期的周数:
library(lubridate)
td = today()
week(td) #48
我怎样才能找到属于第 48 周的所有日子,比如 2020 年?
您可以使用 seq
和 as.Date
,其中 %Y
是年份,%W
是一年中的第几周,%a
是工作日的缩写。
seq(as.Date("2020-48-Mo", "%Y-%W-%a"), by=1, length.out=7)
#as.Date("2020-48-Mo", "%Y-%W-%a") + 0:6 #Alternative
#as.Date("2020-48-1", "%Y-%W-%u") + 0:6 #Alternative
#[1] "2020-11-30" "2020-12-01" "2020-12-02" "2020-12-03" "2020-12-04"
#[6] "2020-12-05" "2020-12-06"
如果星期天是第一天,使用 %U
,星期一是 %W
,周从 0
开始。使用 %V
,以星期一为第一天,以 1
.
开始的星期
如果您有一个日期并且想要本周的所有日期:
x <- as.Date("2020-11-25")
x - as.integer(format(x, "%u")) + 1:7
#[1] "2020-11-23" "2020-11-24" "2020-11-25" "2020-11-26" "2020-11-27"
#[6] "2020-11-28" "2020-11-29"
根据 GKi 的回答,我可以写一个非常方便的函数:
library(lubridate, warn.conflicts=F)
library(glue, warn.conflicts=F)
get_week = function(x){
week_monday = glue("{year(x)}-{isoweek(x)-1}-1")
week_monday = as.Date(week_monday, "%Y-%W-%u")
seq(week_monday, by=1, length.out=7)
}
get_week(ymd("2020-11-25")) #a wednesday
#> [1] "2020-11-23" "2020-11-24" "2020-11-25" "2020-11-26" "2020-11-27"
#> [6] "2020-11-28" "2020-11-29"
get_week(ymd("2020-11-30")) #a monday
#> [1] "2020-11-30" "2020-12-01" "2020-12-02" "2020-12-03" "2020-12-04"
#> [6] "2020-12-05" "2020-12-06"
由 reprex package (v0.3.0)
于 2020-11-30 创建
我有一个时期,我想从周一到周日分成几个星期。
使用lubridate
,我可以查询日期的周数:
library(lubridate)
td = today()
week(td) #48
我怎样才能找到属于第 48 周的所有日子,比如 2020 年?
您可以使用 seq
和 as.Date
,其中 %Y
是年份,%W
是一年中的第几周,%a
是工作日的缩写。
seq(as.Date("2020-48-Mo", "%Y-%W-%a"), by=1, length.out=7)
#as.Date("2020-48-Mo", "%Y-%W-%a") + 0:6 #Alternative
#as.Date("2020-48-1", "%Y-%W-%u") + 0:6 #Alternative
#[1] "2020-11-30" "2020-12-01" "2020-12-02" "2020-12-03" "2020-12-04"
#[6] "2020-12-05" "2020-12-06"
如果星期天是第一天,使用 %U
,星期一是 %W
,周从 0
开始。使用 %V
,以星期一为第一天,以 1
.
如果您有一个日期并且想要本周的所有日期:
x <- as.Date("2020-11-25")
x - as.integer(format(x, "%u")) + 1:7
#[1] "2020-11-23" "2020-11-24" "2020-11-25" "2020-11-26" "2020-11-27"
#[6] "2020-11-28" "2020-11-29"
根据 GKi 的回答,我可以写一个非常方便的函数:
library(lubridate, warn.conflicts=F)
library(glue, warn.conflicts=F)
get_week = function(x){
week_monday = glue("{year(x)}-{isoweek(x)-1}-1")
week_monday = as.Date(week_monday, "%Y-%W-%u")
seq(week_monday, by=1, length.out=7)
}
get_week(ymd("2020-11-25")) #a wednesday
#> [1] "2020-11-23" "2020-11-24" "2020-11-25" "2020-11-26" "2020-11-27"
#> [6] "2020-11-28" "2020-11-29"
get_week(ymd("2020-11-30")) #a monday
#> [1] "2020-11-30" "2020-12-01" "2020-12-02" "2020-12-03" "2020-12-04"
#> [6] "2020-12-05" "2020-12-06"
由 reprex package (v0.3.0)
于 2020-11-30 创建