【问题标题】:Extract financial year from dates从日期中提取财政年度
【发布时间】:2020-01-29 15:02:53
【问题描述】:

我希望按财政年度(4 月 1 日至 3 月 31 日)组织几个变量。

library(lubridate)
StartDate <- ymd(c("2017-03-26", "2018-07-04", "2019-02-23", "2010-10-31", "1989-06-30"))

我已经能够从这些日期中提取年份和季度,将财政开始指定为第 4 个月,使用 lubridates Quarter 函数。但我希望财政年度变量采用 2017/18、2018/19 等格式。

我还发现了 date2fy 函数,该函数有效:

date2fy(StartDate)

但它的默认设置是从 7 月 1 日到 6 月 30 日的澳大利亚财政年度,并且无法弄清楚如何将其更改为从 4 月 1 日开始。

我已经编写了以下内容并且它可以工作,但是有没有更好/更短的方法来做到这一点?

DEP$Start_Fin_Year <- as.numeric(format(DEP$StartDate, "%Y")) - (format(DEP$StartDate, "%m") <= "03")
library(stringr)
DEP$Start_Fin_Year2 <- str_sub(DEP$Start_Fin_Year,start=-2)
DEP$Start_Fin_Year2 <- as.numeric(DEP$Start_Fin_Year2)
DEP$Start_Fin_Year3 <- (DEP$Start_Fin_Year2 + 1)
DEP$Start_Fin_Year4 <- paste0(DEP$Start_Fin_Year, "/", DEP$Start_Fin_Year3)

【问题讨论】:

  • 这与您的方法相同,但由于您已经在使用lubridate,您可以使用 lubridate funs yr &lt;- year(StartDate) - (month(StartDate) &lt;= 3); paste(yr, (yr + 1) %% 1e3, sep = '/') 保存一些字符

标签: r


【解决方案1】:
tibble::tibble(StartDate = StartDate) %>% 
  dplyr::mutate(finstart = ymd(paste0(year(StartDate), "-04-01")),
                finyear = ifelse(StartDate >= finstart, year(finstart) + 1, year(finstart)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多