首页 > 解决方案 > 使用 lubridate 检索会计年度的月份数

问题描述

我希望从 11 月开始的财政年度中检索月份编号(即财政年度的第一天是 11 月 1 日)。以下代码提供了我想要的输出,借用了 的week_start语法lubridate::wday,其中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 上检查了一个类似的问题,但没有看到任何解决方案。有没有人有一个想法可以提供我想要的功能?

非常感谢,

标签: rlubridate

解决方案


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

推荐阅读