是否有 R 函数可以在给定日期之前添加周末星期日
Is there an R function to add weekending Sunday by a given date
我想将一个周末的星期日变异为 R 中的一个数据集。例如
这是我目前拥有的:
x <- seq(Sys.Date(), by = "1 day", length.out = 21)
data.frame(
x = x,
weekday = weekdays(x),
next_friday = ceiling_date(x, "week") +
ifelse(weekdays(x) %in% c("Saturday", "Sunday"), -7,0)
)
也许更简单:
x + (7-as.integer(format(x, "%u")))
# [1] "2021-04-11" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18"
# [8] "2021-04-18" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25"
# [15] "2021-04-25" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02"
更大:
dat <- data.frame(
x = x,
weekday = weekdays(x),
next_sunday_date = x + (7-as.integer(format(x, "%u")))
)
transform(dat, next_sunday_weekday = weekdays(next_sunday_date))
# x weekday next_sunday_date next_sunday_weekday
# 1 2021-04-11 Sunday 2021-04-11 Sunday
# 2 2021-04-12 Monday 2021-04-18 Sunday
# 3 2021-04-13 Tuesday 2021-04-18 Sunday
# 4 2021-04-14 Wednesday 2021-04-18 Sunday
# 5 2021-04-15 Thursday 2021-04-18 Sunday
# 6 2021-04-16 Friday 2021-04-18 Sunday
# 7 2021-04-17 Saturday 2021-04-18 Sunday
# 8 2021-04-18 Sunday 2021-04-18 Sunday
# 9 2021-04-19 Monday 2021-04-25 Sunday
# 10 2021-04-20 Tuesday 2021-04-25 Sunday
# 11 2021-04-21 Wednesday 2021-04-25 Sunday
# 12 2021-04-22 Thursday 2021-04-25 Sunday
# 13 2021-04-23 Friday 2021-04-25 Sunday
# 14 2021-04-24 Saturday 2021-04-25 Sunday
# 15 2021-04-25 Sunday 2021-04-25 Sunday
# 16 2021-04-26 Monday 2021-05-02 Sunday
# 17 2021-04-27 Tuesday 2021-05-02 Sunday
# 18 2021-04-28 Wednesday 2021-05-02 Sunday
# 19 2021-04-29 Thursday 2021-05-02 Sunday
# 20 2021-04-30 Friday 2021-05-02 Sunday
# 21 2021-05-01 Saturday 2021-05-02 Sunday
我想将一个周末的星期日变异为 R 中的一个数据集。例如
这是我目前拥有的:
x <- seq(Sys.Date(), by = "1 day", length.out = 21)
data.frame(
x = x,
weekday = weekdays(x),
next_friday = ceiling_date(x, "week") +
ifelse(weekdays(x) %in% c("Saturday", "Sunday"), -7,0)
)
也许更简单:
x + (7-as.integer(format(x, "%u")))
# [1] "2021-04-11" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18" "2021-04-18"
# [8] "2021-04-18" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25" "2021-04-25"
# [15] "2021-04-25" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02" "2021-05-02"
更大:
dat <- data.frame(
x = x,
weekday = weekdays(x),
next_sunday_date = x + (7-as.integer(format(x, "%u")))
)
transform(dat, next_sunday_weekday = weekdays(next_sunday_date))
# x weekday next_sunday_date next_sunday_weekday
# 1 2021-04-11 Sunday 2021-04-11 Sunday
# 2 2021-04-12 Monday 2021-04-18 Sunday
# 3 2021-04-13 Tuesday 2021-04-18 Sunday
# 4 2021-04-14 Wednesday 2021-04-18 Sunday
# 5 2021-04-15 Thursday 2021-04-18 Sunday
# 6 2021-04-16 Friday 2021-04-18 Sunday
# 7 2021-04-17 Saturday 2021-04-18 Sunday
# 8 2021-04-18 Sunday 2021-04-18 Sunday
# 9 2021-04-19 Monday 2021-04-25 Sunday
# 10 2021-04-20 Tuesday 2021-04-25 Sunday
# 11 2021-04-21 Wednesday 2021-04-25 Sunday
# 12 2021-04-22 Thursday 2021-04-25 Sunday
# 13 2021-04-23 Friday 2021-04-25 Sunday
# 14 2021-04-24 Saturday 2021-04-25 Sunday
# 15 2021-04-25 Sunday 2021-04-25 Sunday
# 16 2021-04-26 Monday 2021-05-02 Sunday
# 17 2021-04-27 Tuesday 2021-05-02 Sunday
# 18 2021-04-28 Wednesday 2021-05-02 Sunday
# 19 2021-04-29 Thursday 2021-05-02 Sunday
# 20 2021-04-30 Friday 2021-05-02 Sunday
# 21 2021-05-01 Saturday 2021-05-02 Sunday