使用lubridate检索会计年度中的月数

使用lubridate检索会计年度中的月数,r,lubridate,R,Lubridate,我希望从11月开始的会计年度(即会计年度的第一天是11月1日)中检索月号。以下代码提供了我的所需的输出,借用了lubridate::wday的week\u start语法,其中year\u start类似于week\u start: library('lubridate') dateToRetrieve = ymd('2017-11-05') #output: [1] "2017-11-05" monthFromDate = month(dateToRetrieve, year_start=11

我希望从11月开始的会计年度(即会计年度的第一天是11月1日)中检索月号。以下代码提供了我的所需的输出,借用了
lubridate::wday
week\u start
语法,其中
year\u start
类似于
week\u start

library('lubridate')
dateToRetrieve = ymd('2017-11-05')
#output: [1] "2017-11-05"
monthFromDate = month(dateToRetrieve, year_start=11)
#output: [1] 1
由于这个功能还不存在,我正在寻找一个提供相同输出的替代解决方案。将
期间(10,units=“month”)
添加到每个日期不起作用,因为不同月份的长度会导致在月份之间转换问题(例如,3月31日减去一个月=2月31日,这没有意义)

我在lubridate github上检查了一个类似的问题,但没有看到任何解决方案。是否有人有想法提供我想要的功能


非常感谢,

这不是一个好办法。。。但是您可以从11月开始创建一个月的向量范围,调用date对象的完整
month
,然后
将这两个对象匹配起来以获得向量位置

suppressPackageStartupMessages(library('lubridate'))

x <- format(ISOdate(2004,1:12,1),"%B")[c(11,12,1:10)]

match(as.character(month(ymd('2017-11-05'), label = TRUE, abbr = FALSE)), x)
#> [1] 1
match(as.character(month(ymd('2017-01-15'), label = TRUE, abbr = FALSE)), x)
#> [1] 3
match(as.character(month(ymd('2017-05-01'), label = TRUE, abbr = FALSE)), x)
#> [1] 7
suppressPackageStartupMessages(库('lubridate'))
x[1]1
匹配(如字符(月(ymd('2017-01-15'),label=TRUE,abbr=FALSE)),x)
#> [1] 3
匹配(如字符(月份(ymd('2017-05-01'),标签=TRUE,缩写=FALSE)),x)
#> [1] 7
1)下面的lubridate可以是字符向量或日期向量:

x <- "2017-11-05" # test data
(month(x) - 11) %% 12 + 1
## [1] 1

如果日期的格式为“2017-Dec-12?!出于学习目的而询问。日期必须是问题中表格的一部分;否则,请先转换它,例如
x谢谢。转换此类日期的最简单方法是什么?!最近让我很为难。在我最后的评论中添加了这一点。谢谢!这就是我所希望的。
mx <- as.POSIXlt(x)$mon + 1
(mx - 11) %% 12 + 1
## [1] 1