r-如何更有效地对分类变量进行重新分类



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

bachelor   values
BBA        291
CSE        10
Math       1
Economics  33
Botany     498
Pharmacy   333

我想对这个变量重新分类。像这样:

Pharmacy, Botany = Life Science
BBA, CSE, Math, Economics = Others

或者,

Pharmacy, Botany = 1
BBA, CSE, Math, Economics = 2

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

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个因子或水平的变量来说,这是不实用的。

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

%in%函数可以在右侧使用多个变量名。所以你可以做:

bachelor[S6 %in% c("Pharmacy", "Botany")] <- "Life Science"
bachelor[S6 %in% c("BBA", "CSE", "Economics", "Math")] <- "Other"

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

dict <- c(Pharmacy="Life Science",
Botany="Life Science",
BBA="Other",
CSE="Other",
Economics="Other",
Math="Other")
bachelor <- dict[match(S6, names(dict))]

或者,使用外包装:

library(lest)
bachelor <- case_when(S6 %in% c("Pharmacy", "Botany")] ~ "Life Science",
S6 %in% c("BBA", "CSE", "Economics", "Math") ~ "Other",
TRUE ~ "Rest"
)

最新更新