从 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))