I found code on stack overflow that converts dates to government FY quarters. I was wondering if there was a way to modify it to show FY Biannuals. As in October, November, December, January, February, March would be FYB1 and April, May, June, July, August, September would be FYB2.
Here is the code that I found that converts to FY Quarters, Code was posted by Nettle on StackOverflow:
Federal.FY <- function(x,firstMonth=10,
fy.prefix='FY',
biannual.prefix='B',
sep='-',
level.range=c(min(x), max(x)) ) {if(level.range[1]
> min(x) | level.range[2] < max(x)) {
warning(paste0('The range of x is
greater than
level.range. Values ',
'outside level.range
will be returned as NA.'))}
quarterString <- function(d) {
year <- as.integer(format(d, format='%Y'))
month <- as.integer(format(d, format='%m'))
y <- ifelse(firstMonth > 1 & month >= firstMonth, year+1, year)
q <- cut( (month - firstMonth) %% 12, breaks=c(-Inf,2,5,8,Inf),
labels=paste0(biannual.prefix, 1:2))
return(paste0(fy.prefix, y, sep, q))}
vals <- quarterString(x)
levels <- unique(quarterString(seq(
as.Date(format(level.range[1], '%Y-%m-01')),
as.Date(format(level.range[2], '%Y-%m-28')), by='month')))
return(factor(vals, levels=levels, ordered=TRUE))}
d <- as.Date("2016-10-02")
Federal.FY(d)