是否有可能获得本月的第N个工作周?目前我有以下代码,但它需要考虑到周末。因此,例如,如果我们提供日期2016-10-10
,则会将3
作为当前周的一周。实际上,这实际上是一个月的第二个工作周。
wk <- function(x) as.numeric(format(x, "%U"));
cur.wom = wk(d) - wk(as.Date(cut(d, "month"))) + 1
答案 0 :(得分:1)
我无法从您的问题中看出您希望如何处理周末,因此以下代码应该适用于周一至周五,但周末可能无法按照您的意愿进行。您应该做的第一件事是将值转换为POSXlt
对象,因为它们包含有关内置星期几等内容的信息。
myDate <- as.POSIXlt("2016-10-10", format = "%Y-%m-%d")
如果格式为年 - 月 - 日或年 - 月 - 月,则可能必须修改日期的format
字符串,因为它与您的示例不一致。
然后我们可以使用以下等式来获取您的营业周价值。
(myDate$mday - myDate$wday + 4) %/% 7 + 1
mday
字段包含日期的月份日期,wday
包含表示星期几的数值(从星期日的0
开始)。从wday
中减去mday
,我们会在同一周内的任何一天获得相同的数字。 %/% 7
进行整数除法,将事情分成几周。 + 4
会调整每周的值,以便在应用%/% 7
时,它会指示您想要的一周,无论该月的哪一天开始。最终+ 1
只会转换数据,因此周数的开头数为1
而不是0
。