我经常需要创建一个因子变量,并且希望保留它来自的变量的顺序。我觉得我应该可以通过在新类别变量的每个组内取平均值,然后将其作为排序变量在fct_reorder中使用来实现这一点,但似乎并不起作用。以下是一个简单的例子:
library(tidyverse)
test_data <- mtcars %>%
mutate(mpg_cat=case_when(mpg>20 ~ "More than 20",
mpg<=20 & mpg>=15 ~ "15-20",
mpg<15 ~ "Less than 15")) %>%
group_by(mpg_cat) %>%
mutate(avg_mpg=mean(mpg),
mpg_cat=fct_reorder(mpg_cat,avg_mpg))
levels(test_data$mpg_cat) #Want the order to be less than 15, 15-20, More than 20