Новый клиент на работе имеет финансовый календарь, который начинается в марте и заканчивается в феврале следующего года:
fiscalMonthLabels <- c("March", "April", "May", "June",
"July", "August", "September", "October",
"November", "December", "January", "February")
Но поскольку они новые, у нас есть данные за несколько месяцев:
library(lubridate)
rawDate <- c("2018-09-01", "2018-10-01", "2018-11-01")
actualMonth <- month(rawDate)
newMonth <- rep(0, length(actualMonth))
for (i in 1:length(actualMonth)) {
if (actualMonth[i] == 1) {newMonth[i] <- 11}
else if (actualMonth[i] == 2) {newMonth[i] <- 12}
else {newMonth[i] <- actualMonth[i] - 2}
}
revenue <- c(123, 456, 789)
df <- data.frame(rawDate, actualMonth, newMonth, revenue)
df
rawDate actualMonth newMonth revenue
1 2018-09-01 9 7 123
2 2018-10-01 10 8 456
3 2018-11-01 11 9 789
Поэтому, когда я пытаюсь создать новый фактор с финансовым месяцем, я получаю следующую ошибку:
fiscalMonth <- factor(newMonth, labels = fiscalMonthLabels)
Error in factor(newMonth, labels = fiscalMonthLabels) :
invalid 'labels'; length 12 should be 1 or 3
Кажется, что команда factor
ищет в actualMonth
все двенадцать возможных значений. Как мне обойти эту проблему?