Пакет forcats
имеет множество удобных функций для таких видов манипуляций с факторами. Я бы предложил функцию fct_collapse
, которая позволяет вам определять уровни нового (менее детального) фактора на основе уровней другого фактора или вектора символов:
library(dplyr)
library(forcats)
dates = tibble(
month = factor(sample(month.abb,40,replace = TRUE),levels = month.abb)
)
dates = dates %>% mutate(
season = fct_collapse(
month,
'Spring' = month.abb[3:5],
'Summer' = month.abb[6:8],
'Fall' = month.abb[9:11],
'Winter' = month.abb[c(12,1,2)]
)
)
# check them:
table(dates$month,dates$season)
Вы можете сделать это вручную с помощью switch
утверждение, но зачем изобретать велосипед!