从 R 中的日期中提取一周中的哪一天 - 即:第二个星期二
Extract which day of the week from date in R - ie: the second tuesday
我已经格式化了日期
as.Date(variable, format="%Y%m%d")
我使用
从中提取了工作日
weekdays(as.Date(variable))
我现在需要能够说出日期是星期几。例如,这是二月的第二个星期二,或者这是三月的第四个星期五。
您可以通过 (as.integer(format(x, "%d")) - 1) %/% 7 + 1
找到一年中的第 n
个工作日:
days <- as.Date("2017-03-01") + 0:9
wdays <- weekdays(days)
nth <- (as.integer(format(days, "%d")) - 1) %/% 7 + 1
(放一个data.frame方便对齐:)
cbind.data.frame(days, wdays, nth)
# days wdays nth
# 1 2017-03-01 Wednesday 1
# 2 2017-03-02 Thursday 1
# 3 2017-03-03 Friday 1
# 4 2017-03-04 Saturday 1
# 5 2017-03-05 Sunday 1
# 6 2017-03-06 Monday 1
# 7 2017-03-07 Tuesday 1
# 8 2017-03-08 Wednesday 2
# 9 2017-03-09 Thursday 2
# 10 2017-03-10 Friday 2
发生的次数只是 (day of month / 7) 的上限,并且可以使用 as.POSIXlt
提取月份的日期,所以将它们放在一起:
d <- as.Date(variable, format="%Y%m%d")
occ <- c("1st", "2nd", "3rd", "4th", "5th")
paste(occ[ceiling(as.POSIXlt(d)$mday / 7L)], weekdays(d), "of", months(d))
我已经格式化了日期
as.Date(variable, format="%Y%m%d")
我使用
从中提取了工作日weekdays(as.Date(variable))
我现在需要能够说出日期是星期几。例如,这是二月的第二个星期二,或者这是三月的第四个星期五。
您可以通过 (as.integer(format(x, "%d")) - 1) %/% 7 + 1
找到一年中的第 n
个工作日:
days <- as.Date("2017-03-01") + 0:9
wdays <- weekdays(days)
nth <- (as.integer(format(days, "%d")) - 1) %/% 7 + 1
(放一个data.frame方便对齐:)
cbind.data.frame(days, wdays, nth)
# days wdays nth
# 1 2017-03-01 Wednesday 1
# 2 2017-03-02 Thursday 1
# 3 2017-03-03 Friday 1
# 4 2017-03-04 Saturday 1
# 5 2017-03-05 Sunday 1
# 6 2017-03-06 Monday 1
# 7 2017-03-07 Tuesday 1
# 8 2017-03-08 Wednesday 2
# 9 2017-03-09 Thursday 2
# 10 2017-03-10 Friday 2
发生的次数只是 (day of month / 7) 的上限,并且可以使用 as.POSIXlt
提取月份的日期,所以将它们放在一起:
d <- as.Date(variable, format="%Y%m%d")
occ <- c("1st", "2nd", "3rd", "4th", "5th")
paste(occ[ceiling(as.POSIXlt(d)$mday / 7L)], weekdays(d), "of", months(d))