Convierta valores numéricos continuos a categorías discretas definidas por intervalos

Tengo un dataframe con una variable numérica continua, la edad en meses (age_mnths). Quiero hacer una nueva variable discreta, con categorías de edad basadas en intervalos de edad.

# Some example data rota2 <- data.frame(age_mnth = 1:170) 

ifelse procedimiento basado en ifelse (a continuación), pero creo que existe la posibilidad de una solución más elegante.

 rota2$age_gr<-ifelse(rota2$age_mnth < 6, rr2  5 & rota2$age_mnth < 12, rr2  11 & rota2$age_mnth < 24, rr2  23 & rota2$age_mnth < 60, rr2  59 & rota2$age_mnth < 167, rr2 <- "5-14 yrs", rr2 <- "adult"))))) 

Sé que hay una función de cut , pero no pude tratarla para mi propósito de discretizar / categorizar.

Si hay una razón por la que no quieres usar el cut entonces no entiendo por qué. cut funcionará bien para lo que quieres hacer

 # Some example data rota2 <- data.frame(age_mnth = 1:170) # Your way of doing things to compare against rota2$age_gr<-ifelse(rota2$age_mnth<6,rr2<-"0-5 mnths", ifelse(rota2$age_mnth>5&rota2$age_mnth<12,rr2<-"6-11 mnths", ifelse(rota2$age_mnth>11&rota2$age_mnth<24,rr2<-"12-23 mnths", ifelse(rota2$age_mnth>23&rota2$age_mnth<60,rr2<-"24-59 mnths", ifelse(rota2$age_mnth>59&rota2$age_mnth<167,rr2<-"5-14 yrs", rr2<-"adult"))))) # Using cut rota2$age_grcut <- cut(rota2$age_mnth, breaks = c(-Inf, 6, 12, 24, 60, 167, Inf), labels = c("0-5 mnths", "6-11 mnths", "12-23 mnths", "24-59 mnths", "5-14 yrs", "adult"), right = FALSE) 
 rota2$age_gr<-c( "0-5 mnths", "6-11 mnths", "12-23 mnths", "24-59 mnths", "5-14 yrs", "adult")[ findInterval(rota2$age_mnth , c(-Inf, 5.5, 11.5, 23.5, 59.5, 166.5, Inf) ) ]