本月第N个商业周刊

时间:2016-11-18 01:34:29

标签: r

是否有可能获得本月的第N个工作周?目前我有以下代码,但它需要考虑到周末。因此,例如,如果我们提供日期2016-10-10,则会将3作为当前周的一周。实际上,这实际上是一个月的第二个工作周。

wk <- function(x) as.numeric(format(x, "%U")); 
cur.wom = wk(d) - wk(as.Date(cut(d, "month"))) + 1

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