确定 R 中 yearmon 对象的财政年度
Identify fiscal year for yearmon object in R
我有初步的月度签证数据(2017 年 9 月 - 2020 年 11 月),我想将其与官方公布的财政年度数据进行比较。我将月份存储为 yearmon 对象,并希望在新列中标识联邦财政年度(从 10 月开始)。
我可以使用以下代码轻松完成此操作:
library(tidyverse)
library(zoo)
IVdata_FY <- IVdata_final %>%
mutate(
fy = case_when(
month <= "Sep 2017" ~ "FY17",
month >= "Oct 2017" & month <= "Sep 2018" ~ "FY18",
month >= "Oct 2018" & month <= "Sep 2019" ~ "FY19",
month >= "Oct 2019" & month <= "Sep 2020" ~ "FY20",
month >= "Oct 2020" ~ "FY21"
)
)
但是,如果我有跨越多个财政年度的数据,这种手工方法会过度而且容易出错。
有没有一种简单的方法来识别财政年度,而不必为每个财政年度详细说明时间范围?我的直觉是它会涉及动物园如何存储 yearmon 数据,但我一直无法弄清楚我可以使用什么代码。
您可以从 zoo
对象中提取年份和月份,如果月份大于十月,则将 year
值增加 1。
library(dplyr)
library(lubridate)
IVdata_final %>%
mutate(date = month,
year = year(date),
month = month(date),
fy = paste0('FY', ifelse(month >= 10, year + 1, year))) -> IVdata_FY
IVdata_FY
我们假设会计年度在 9 月结束,因此对应于 10 月、11 月和 12 月的会计年度是下一个日历年,而对于其他月份,会计年度与日历年相同。
通过将 3/12 添加到输入 yearmon
对象,将输入向前推三个月,以便将 10 月、11 月和 12 月推到下一个日历年,但没有其他月份,然后格式:
library(zoo)
ym <- yearmon(2020 + 0:11/12) # test data: Jan '20, Feb '20, ..., Dec '20
format(ym + 3/12, "FY%y")
## [1] "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY21"
## [11] "FY21" "FY21"
我有初步的月度签证数据(2017 年 9 月 - 2020 年 11 月),我想将其与官方公布的财政年度数据进行比较。我将月份存储为 yearmon 对象,并希望在新列中标识联邦财政年度(从 10 月开始)。
我可以使用以下代码轻松完成此操作:
library(tidyverse)
library(zoo)
IVdata_FY <- IVdata_final %>%
mutate(
fy = case_when(
month <= "Sep 2017" ~ "FY17",
month >= "Oct 2017" & month <= "Sep 2018" ~ "FY18",
month >= "Oct 2018" & month <= "Sep 2019" ~ "FY19",
month >= "Oct 2019" & month <= "Sep 2020" ~ "FY20",
month >= "Oct 2020" ~ "FY21"
)
)
但是,如果我有跨越多个财政年度的数据,这种手工方法会过度而且容易出错。
有没有一种简单的方法来识别财政年度,而不必为每个财政年度详细说明时间范围?我的直觉是它会涉及动物园如何存储 yearmon 数据,但我一直无法弄清楚我可以使用什么代码。
您可以从 zoo
对象中提取年份和月份,如果月份大于十月,则将 year
值增加 1。
library(dplyr)
library(lubridate)
IVdata_final %>%
mutate(date = month,
year = year(date),
month = month(date),
fy = paste0('FY', ifelse(month >= 10, year + 1, year))) -> IVdata_FY
IVdata_FY
我们假设会计年度在 9 月结束,因此对应于 10 月、11 月和 12 月的会计年度是下一个日历年,而对于其他月份,会计年度与日历年相同。
通过将 3/12 添加到输入 yearmon
对象,将输入向前推三个月,以便将 10 月、11 月和 12 月推到下一个日历年,但没有其他月份,然后格式:
library(zoo)
ym <- yearmon(2020 + 0:11/12) # test data: Jan '20, Feb '20, ..., Dec '20
format(ym + 3/12, "FY%y")
## [1] "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY20" "FY21"
## [11] "FY21" "FY21"