Поскольку сезонные месяцы являются смежными, это хорошая работа для функции cut
:
months <- c(1,1,1,2,3,4,5,6,7,8,8,9,11,12)
seasons <- c("Winter", "Spring", "Summer", "Autumn")
indx <- cut(months %% 12, # send 12 to 0
seq(0, 12, 3), # cut into three month cycles
labels = F, # return index
include.lowest = T, # include lower bounds (0, 3, 6, 9)
right = F # exclude upper bounds (3, 6, 9, 12)
)
seasons[indx]
# [1] "Winter" "Winter" "Winter" "Winter" "Spring" "Spring" "Spring" "Summer"
# [9] "Summer" "Summer" "Summer" "Autumn" "Autumn" "Winter"
cut
с labels = F
создает индекс, который позволяет вам подмножествовать символьный вектор season
.