Convert continuous numeric values to discrete categories defined by intervals

前端 未结 2 1585
不思量自难忘°
不思量自难忘° 2020-11-21 15:09

I have a data frame with a continuous numeric variable, age in months (age_mnths). I want to make a new discrete variable, with age categories based on age intervals.

<
相关标签:
2条回答
  • 2020-11-21 15:28
    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) ) ]
    
    0 讨论(0)
  • 2020-11-21 15:32

    If there is a reason you don't want to use cut then I don't understand why. cut will work fine for what you want to do

    # 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)
    
    0 讨论(0)
提交回复
热议问题