我试着写一个R函数来计算两个日期之间的工作日数。例如,Nweekdays('01/30/2011','02/04/2011')将等于5。
类似于this question。谢谢!
/edit:@J. Winchester的答案很棒,但我想知道是否有人能想到一种方法来矢量化这个,这样它就可以在2列日期上工作。谢谢!/edit 2:再次感谢!
我试着写一个R函数来计算两个日期之间的工作日数。例如,Nweekdays('01/30/2011','02/04/2011')将等于5。
类似于this question。谢谢!
/edit:@J. Winchester的答案很棒,但我想知道是否有人能想到一种方法来矢量化这个,这样它就可以在2列日期上工作。谢谢!/edit 2:再次感谢!
7条答案
按热度按时间brgchamk1#
编辑:而扎克说,让有
Vectorize
:)k10s72fa2#
这些修改的函数考虑了正或负的日期差异,而可接受的解决方案考虑了正的日期差异。
1.区域设置相关解决方案:
Nweekdays()
函数改编自@J. Won.的解决方案,适用于locale = "English_United States.1252"
a.英语区域设置
B.中文环境
2.区域独立解决方案:
Nweekdays()
函数改编自@Sacha Epskamp的解决方案,它适用于所有区域,但@Sacha Epskamp使用c(0,6)
剔除周末,这与此解决方案使用c(2,3)
提取周末不同。a.英语区域设置
B.中文环境
ugmeyewa3#
我写了这一个,但另一个答案更好:)
EDIT:计算两个指定日期之间有多少个工作日。
编辑:
根据J. Winchester的建议,这一职能可简化为:
一些结果:
注意,这与语言环境无关。(关于这个主题,我如何更改语言环境呢?)
wnavrhmk4#
使用Lubridate解决这个问题,您可以创建如下函数:
z31licg05#
J.Win的答案是好的,但是使用lubridate可以更快一些。
以下是我的机器的时间结果:
大约快30倍。如果你做了很多月经,这是有意义的。
um6iljoc6#
我使用以下方法-首先是一个助手:
......现在是主要功能:
示例:
nsc4cvqm7#
这样应该更快