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

基于双列与重复ID分组的Base R中位数计算方案问询

一行Base R实现分组中位数替换(含重复ID归组)

直接用这行代码就能完成需求,无需自定义函数:

df$value <- with(df, ave(value, interaction(ifelse(ave(id, id, FUN = length) > 1, "AB", group), num), FUN = median))

代码逻辑拆解

  • 识别重复ID:ave(id, id, FUN = length) > 1会标记出所有出现多次的ID(该ID对应的每一行都会返回TRUE)
  • 重定义分组规则:通过ifelse把重复ID对应的group替换为"AB",非重复ID保留原group值
  • 构建分组键:interaction(...)将处理后的分组与num合并成唯一的分组标识,实现同时按两个维度分组
  • 计算并替换中位数:ave(value, ..., FUN=median)会针对每个分组计算中位数,返回与原value长度一致的向量,直接赋值回原列即可

匹配示例预期

对于你提供的示例中重复的id17-20,它们的value值为c(21,67,80,69),归到AB 0.1组后的中位数为(67+69)/2 = 68.0,完全符合预期;非重复ID则按原group+num分组计算中位数替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:37