使用 R Lubridate 提取会计年度

问题描述 投票:0回答:2

我将创建几个日期。

library(lubridate)
x <- ymd(c("2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31"))

我可以从这些

x
值中提取年份和季度。

quarter(x, with_year = TRUE, fiscal_start = 10)

[1] 2012.2 2012.3 2012.4 2013.1

但我似乎无法仅提取财政年度。这行不通,但是什么可以呢?

year(x, with_year = TRUE, fiscal_start = 10)

我收到以下错误消息:

年份错误(x,with_year = TRUE,fiscal_start = 10): 未使用的参数(with_year = TRUE,fiscal_start = 10)

r lubridate
2个回答
11
投票

如果您不介意额外的步骤,您可以提取季度的前 4 个字符来获取年份。

library(lubridate)

x <- ymd(c("2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31"))

q <- quarter(x, with_year = TRUE, fiscal_start = 10)
q
#> [1] 2012.2 2012.3 2012.4 2013.1

fy <- stringr::str_sub(q, 1, 4)
fy
#> [1] "2012" "2012" "2012" "2013"

4
投票
df <- data.frame(x)
fiscal_start = 10

# with base R
df$fy <- ifelse(month(df$x) >= fiscal_start, year(df$x) + 1, year(df$x))

# or with dplyr:
df |> mutate(fy = ifelse(month(x) >= fiscal_start, year(x) + 1, year(x)))

这会产生:

           x   fy
1 2012-03-26 2012
2 2012-05-04 2012
3 2012-09-23 2012
4 2012-12-31 2013
© www.soinside.com 2019 - 2024. All rights reserved.