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

R语言中group_by结合bi_class函数时结果无变化问题

问题原因与解决方案

问题核心在于bi_class函数不支持dplyr的分组上下文——哪怕你用group_by(ProjectID)做了分组,它还是会读取整个数据集的svi和race_black列计算分位数,所以加不加分组结果完全一致。

要实现按ProjectID分组计算二元分类,需要用group_modify强制每个分组单独执行bi_class:

IDD_nhmap <- IDD_nhmap %>%
  dplyr::arrange(ProjectID, Zip) %>%
  dplyr::group_by(ProjectID) %>%
  # 对每个分组单独运行bi_class
  dplyr::group_modify(function(.data, .key) {
    .data %>%
      bi_class(
        x = svi,
        y = race_black,
        style = "quantile",
        dim = 3
      )
  }) %>%
  dplyr::rename(bi_class_svi_ProjectB = bi_class) %>%
  dplyr::ungroup()  # 完成分组操作后取消分组,避免后续操作受分组规则影响

关键逻辑说明

  • group_modify会遍历每个ProjectID对应的子数据集,把每个子数据集单独传入匿名函数
  • 在匿名函数内,bi_class基于当前分组的svi和race_black计算分位数,生成的分类结果仅对应当前分组
  • 最后取消分组是常规操作,防止后续dplyr操作默认沿用分组规则

内容的提问来源于stack exchange,提问作者Nader Mehri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:12:46