首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更有效地对分类变量进行重新分类?

如何更有效地对分类变量进行重新分类?
EN

Stack Overflow用户
提问于 2020-03-30 22:17:36
回答 1查看 195关注 0票数 0

我正在练习一个数据集,其中我有一个变量S6。它包含6个级别/因素。该变量table如下所示:

代码语言:javascript
复制
bachelor   values
BBA        291
CSE        10
Math       1
Economics  33
Botany     498
Pharmacy   333

我想重新对这个变量进行分类。如下所示:

代码语言:javascript
复制
Pharmacy, Botany = Life Science
BBA, CSE, Math, Economics = Others

或,

代码语言:javascript
复制
Pharmacy, Botany = 1
BBA, CSE, Math, Economics = 2

我尝试了这种技术来对这个变量进行重新分类:

代码语言:javascript
复制
bachelor[S6 %in% c("Pharmacy")] <- "Life Science"
bachelor[S6 %in% c("Botany")] <- "Life Science"
bachelor[S6 %in% c("BBA")] <- "Other"
bachelor[S6 %in% c("CSE")] <- "Other"
bachelor[S6 %in% c("Economics")] <- "Other"
bachelor[S6 %in% c("Math")] <- "Other"

这项技术实际上对我很有效。但是,对于一个有超过10个因子或水平的变量来说,这是不现实的。

请建议我一些更有效的方法来重新分类变量。

EN

回答 1

Stack Overflow用户

发布于 2020-03-30 22:22:22

%in%函数可以在右侧接受多个变量名。所以你可以这样做:

代码语言:javascript
复制
bachelor[S6 %in% c("Pharmacy", "Botany")] <- "Life Science"
bachelor[S6 %in% c("BBA", "CSE", "Economics", "Math")] <- "Other"

或者,您可以创建一种用于翻译的字典,并使用match

代码语言:javascript
复制
dict <- c(Pharmacy="Life Science",
          Botany="Life Science",
          BBA="Other",
          CSE="Other",
          Economics="Other",
          Math="Other")

bachelor <- dict[match(S6, names(dict))]

或者,使用外部包:

代码语言:javascript
复制
library(lest)
bachelor <- case_when(S6 %in% c("Pharmacy", "Botany")] ~ "Life Science",
                      S6 %in% c("BBA", "CSE", "Economics", "Math") ~ "Other",
                      TRUE ~ "Rest"
                      )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60932535

复制
相关文章

相似问题

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