在R中如何将多个因子变量的基准类别设为出现频率最高的水平
解决方案
你可以直接使用tidyverse生态中forcats包的fct_infreq()函数实现需求,该函数会自动按因子水平的出现频率降序重排水平顺序,而R因子的默认参照组就是排序后的第一个水平,一行代码即可批量完成修改:
df <- df %>% mutate(across(c(Sex, Pclass, Embarked), fct_infreq))
效果验证
修改后可查看因子水平确认基准组已改为最高频类别:
- Embarked的基准组变为最高频的S:
levels(df$Embarked) #> [1] "S" "C" "Q"
- Pclass的基准组变为最高频的3:
levels(df$Pclass) #> [1] "3" "1" "2"
如果需要调整为按频率升序排列、把最低频设为基准组,换成fct_infreq(.x, desc = FALSE)即可。
内容的提问来源于stack exchange,提问作者Oska Fentem
相关产品推荐
相关产品推荐

