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

R语言dplyr按Type1和Type2分组计算中位数填充AB组Median列值

R分组填充指定分组中位数解决方案

原代码失效原因

你写的代码运行后Type1=AB且Type2=1对应的行Median仍然为NA,核心原因是该分组下所有Value值都是NA,median(Value)默认不会忽略NA值,计算返回结果为NA,无法实现填充效果。

可用实现代码

mutate本身就不会压缩分组后的行数,完全符合你不使用summarise的要求,你可以直接用下面的代码得到目标结果:

library(dplyr)

df1 %>%
  group_by(Type1, Type2) %>%
  mutate(Median = case_when(
    # 给指定分组填充目标中位数1
    Type1 == "AB" & Type2 == 1 ~ 1,
    # 其他分组保留原有Median值
    .default = Median
  ))

如果你后续需要适配更多全NA分组的自动填充逻辑,也可以在计算中位数时增加忽略NA的参数,再对空结果做替换:

df1 %>%
  group_by(Type1, Type2) %>%
  mutate(Median = ifelse(
    Type1 == "AB" & Type2 == 1,
    # 先忽略NA计算中位数,结果为NA的话替换为1
    dplyr::coalesce(median(Value, na.rm = TRUE), 1),
    Median
  ))

运行上述任意代码后得到的结果和你给出的目标df12完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:18:02