使用 lubridate 检索财政年度中的月份编号
Retrieving month number in fiscal year using lubridate
我希望从 11 月开始的会计年度中检索月份编号(即会计年度的第一天是 11 月 1 日)。下面的代码提供了我的 desired 输出,借用了 lubridate::wday
的 week_start
语法,其中 year_start
是类似于 week_start
:
library('lubridate')
dateToRetrieve = ymd('2017-11-05')
#output: [1] "2017-11-05"
monthFromDate = month(dateToRetrieve, year_start=11)
#output: [1] 1
由于此功能尚不存在,我正在寻找可提供相同输出的替代解决方案。向每个日期添加 period(10, units="month")
不起作用,因为不同月份的长度会导致月份之间的转换问题(例如,3 月 31 日减去一个月 = 2 月 31 日,这没有意义)。
我在 lubridate github here 上检查了一个有点类似的问题,但没有看到任何解决方案。有谁知道可以提供我想要的功能吗?
非常感谢,
这不是很好的方法...但是您可以创建从 11 月开始的月份向量范围,调用完整的 month
日期对象,然后 match
这两个对象获取矢量位置。
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
1) lubridate下面x
可以是字符向量或Date
向量:
x <- "2017-11-05" # test data
(month(x) - 11) %% 12 + 1
## [1] 1
2) 基数 R 要仅使用基数 R 执行此操作,首先计算给出 mx
的月份数,如图所示,然后执行相同的计算:
mx <- as.POSIXlt(x)$mon + 1
(mx - 11) %% 12 + 1
## [1] 1
我希望从 11 月开始的会计年度中检索月份编号(即会计年度的第一天是 11 月 1 日)。下面的代码提供了我的 desired 输出,借用了 lubridate::wday
的 week_start
语法,其中 year_start
是类似于 week_start
:
library('lubridate')
dateToRetrieve = ymd('2017-11-05')
#output: [1] "2017-11-05"
monthFromDate = month(dateToRetrieve, year_start=11)
#output: [1] 1
由于此功能尚不存在,我正在寻找可提供相同输出的替代解决方案。向每个日期添加 period(10, units="month")
不起作用,因为不同月份的长度会导致月份之间的转换问题(例如,3 月 31 日减去一个月 = 2 月 31 日,这没有意义)。
我在 lubridate github here 上检查了一个有点类似的问题,但没有看到任何解决方案。有谁知道可以提供我想要的功能吗?
非常感谢,
这不是很好的方法...但是您可以创建从 11 月开始的月份向量范围,调用完整的 month
日期对象,然后 match
这两个对象获取矢量位置。
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
1) lubridate下面x
可以是字符向量或Date
向量:
x <- "2017-11-05" # test data
(month(x) - 11) %% 12 + 1
## [1] 1
2) 基数 R 要仅使用基数 R 执行此操作,首先计算给出 mx
的月份数,如图所示,然后执行相同的计算:
mx <- as.POSIXlt(x)$mon + 1
(mx - 11) %% 12 + 1
## [1] 1