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

如何在R语言数据框中为同一ID的多条记录用均值填充NA?

使用dplyr按ID分组填充缺失的height值

直接用dplyr的分组+列修改就能解决这个问题,完整代码如下:

library(dplyr)

# 你的原始数据
df <- data.frame(id = c(1,1,1,2,2,2,2,2,3,3,3,3), 
                 height = c(150, NA, 151, NA, NA, 176, 175, 174, 198, NA, 197, 198))

# 分组填充缺失值
df_filled <- df %>%
  group_by(id) %>%
  mutate(height = ifelse(is.na(height), mean(height, na.rm = TRUE), height)) %>%
  ungroup()

# 查看结果
print(df_filled)

关键步骤解释:

  • group_by(id):按id字段对数据分组,确保后续的均值计算和填充操作都只在每个ID的组内进行。
  • mutate(height = ...):修改height列,用ifelse()做条件判断:
    • 如果当前height是NA,就替换为该组内height的均值(na.rm = TRUE必须加上,不然组内有NA时均值会变成NA,无法完成填充);
    • 如果不是NA,保留原始值。
  • ungroup():取消分组,让数据回到常规的数据框结构,避免后续操作受到分组状态的影响。

运行后你会看到每个ID下的NA都被替换成了对应组的均值,比如ID1的NA变成150.5,ID2的NA变成175,ID3的NA变成197.6667,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:54:55