You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用forcats::fct_reorder仅按私立学校中位数重排郡县因子

解决方法

你只需对forcats::fct_reorder()的排序参数做掩码处理,仅保留私立学校数值参与中位数计算即可,修改后的完整代码如下:

# make df
set.seed(1)
df <-
  data.frame(
    county = rep(c("Bexar","Travis","Tarrant","Aransas"), each=20),
    type = rep(c("public","private"), each=10)
  ) %>%
  mutate(value = case_when(type == "public" ~ runif(80,0,1),
                           type == "private" ~ runif(80, 0, 10))) 

# 仅按私立学校中位数重排county因子
df %>%
  mutate(county = forcats::fct_reorder(
    .f = county,
    .x = ifelse(type == "private", value, NA),
    .fun = median,
    na.rm = TRUE
  )) %>% 
  # plot
  ggplot(aes(x=county, y = value, color = type)) +
  geom_point(position = position_dodge(width=.75)) +
  geom_boxplot(alpha=.5)

实现逻辑

  • 用ifelse(type == "private", value, NA)将公立学校的数值替换为缺失值
  • 传入na.rm = TRUE参数后,median函数计算时会自动忽略缺失的公立数值,仅用每个郡县私立学校的中位数对因子排序,最终得到你需要的升序顺序:Aransas、Travis、Tarrant、Bexar。

内容的提问来源于stack exchange,提问作者Jake L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:54:04