首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将连续数值转换为按间隔定义的离散类别

将连续数值转换为按间隔定义的离散类别
EN

Stack Overflow用户
提问于 2012-11-26 13:22:57
回答 2查看 43.1K关注 0票数 24

我有一个数据框,其中包含一个连续的数值变量,即年龄(age_mnths)。我想创建一个新的离散变量,根据年龄间隔划分年龄类别。

代码语言:javascript
复制
# Some example data
rota2 <- data.frame(age_mnth = 1:170)

我已经创建了基于ifelse的过程(见下文),但我相信有可能会有更优雅的解决方案。

代码语言:javascript
复制
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")))))

我知道有cut函数,但我不能处理它来进行离散化/分类。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-26 13:48:03

如果你有不想使用cut的原因,那我就不明白为什么了。cut可以很好地完成您想做的事情

代码语言:javascript
复制
# 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)
票数 46
EN

Stack Overflow用户

发布于 2012-11-26 13:49:13

代码语言:javascript
复制
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) ) ]
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13559076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档