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

在R的dplyr中使用group_by时如何合并因子水平

在group_by()中直接合并指定外的因子水平为"other"

完全可以在group_by()中直接实现,不用提前修改原数据框的因子水平。下面用两种实用方法演示,基于tidyverse工具链:

方法1:用case_when()直接分组替换

适合不需要严格保留因子属性的场景,直接在group_by()内生成新的分组列:

library(dplyr)

# 构造示例数据
set.seed(123)
df <- tibble(
  group = factor(sample(c("A", "B", "C"), 100, replace = TRUE)),
  value = rnorm(100)
)

# 直接在group_by中合并非指定水平
df %>%
  group_by(group = case_when(
    group %in% c("A", "B") ~ as.character(group),  # 保留指定水平
    TRUE ~ "other"                                 # 其余合并为other
  )) %>%
  summarise(
    均值 = mean(value),
    样本量 = n()
  )

方法2:用forcats::fct_other()处理因子(推荐)

如果你的分组列是因子类型,用forcats包的fct_other()更专业,能保留因子特性且代码更简洁:

library(dplyr)
library(forcats)

df %>%
  group_by(group = fct_other(
    group,
    keep = c("A", "B"),        # 指定要保留的因子水平
    other_level = "other"      # 合并后的名称
  )) %>%
  summarise(
    均值 = mean(value),
    样本量 = n()
  )

两种方法都不需要提前修改原数据框,直接在分组步骤完成合并逻辑,结果会保留指定水平,其余归为"other"后再做汇总计算。

内容的提问来源于stack exchange,提问作者Vanessa Han

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:51:08