2016-11-18 51 views
0

是否有可能获得当月的第N个商业周?目前我有以下代码,但它需要考虑周末。因此,举例来说,如果我们给出日期2016-10-10,这将给出3为当前的一个月中的一周。事实上,这实际上是每个月的第二个商业周。当月的第N个商业周

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

您可能想更明确地定义“商业周”,以便我们确切地知道您的意思。 – thelatemail

+0

平日....没有周末 – user1234440

+0

那么,一个营业周的5个工作日?或者无论日期如何,每个星期一都会有新的商业周? – thelatemail

回答

1

我无法从你的问题告诉你想怎么处理,所以下面的代码应该通过周五周一周末工作,但只要你想周末可​​能不会去。你应该做的第一件事是将值转换为一个POSXlt对象,因为这些有关于喜欢星期几件事内置信息。

myDate <- as.POSIXlt("2016-10-10", format = "%Y-%m-%d") 

您可能需要修改format字符串的日期,因为它是从暧昧你的例子,如果格式是年,月或日 - 月。

然后,我们可以使用以下公式来获得您的业务周值。

(myDate$mday - myDate$wday + 4) %/% 7 + 1 

mday领域包含月份的一天的日期和wday包含一个数值表示星期几(星期日开始0)。通过从mday中减去wday,我们可以得到同一周内任何一天的相同数字。 %/% 7做整数除法将分成几周。 + 4会调整每周的值,以便在应用%/% 7时,它会指示您想要的星期,而不管该月的某个星期几在哪一天开始。最后的+ 1只是转换数据,所以周的coundint从1开始,而不是0

相关问题