R语言如何为factor设置指定顺序的levels?
R语言设置因子(factor)levels为指定顺序的实现方法
现有默认生成的因子会按照字母序排列levels,你可以通过以下两种常用方式调整为期望的"CA", "IN", "FL", "NY"顺序:
方法1:基础R原生实现,无需额外扩展包
直接在factor()函数中传入levels参数指定顺序即可,修改后的完整代码如下:
library(dplyr) tbl <- tibble(states = c("FL", "NY", "CA", "IN")) %>% mutate(states_fct = factor(states, levels = c("CA", "IN", "FL", "NY")))
运行levels(tbl$states_fct)即可验证输出顺序符合要求。
方法2:tidyverse生态专用,使用forcats包调整
forcats是tidyverse体系中专门用于因子处理的包,灵活性更高,也支持对已经生成的因子直接调整顺序:
library(dplyr) library(forcats) # 场景1:生成因子时直接指定顺序 tbl <- tibble(states = c("FL", "NY", "CA", "IN")) %>% mutate(states_fct = fct_relevel(states, "CA", "IN", "FL", "NY")) # 场景2:修改已生成的默认因子的levels顺序 tbl <- tibble(states = c("FL", "NY", "CA", "IN")) %>% mutate(states_fct = factor(states)) %>% # 先按默认规则生成因子 mutate(states_fct = fct_relevel(states_fct, c("CA", "IN", "FL", "NY")))
补充说明
如果你的目标顺序已经提前存储在向量中(比如target_order <- c("CA", "IN", "FL", "NY")),直接把上述代码中手动写的levels列表替换为这个向量即可,不需要逐一枚举。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

