我正在练习一个数据集,其中我有一个变量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"
)