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

在R语言中如何按分组填充分类变量的缺失值?

分组替换分类变量缺失值的高效方法

针对大型数据集里按分组填充分类变量NA的需求,以下两种方法无需手动指定每个分组,能高效完成数据清洗:

方法一:替换为组内出现频率最高的值(众数)

先定义一个取众数的辅助函数,再结合dplyr分组处理:

# 定义取众数的函数(自动忽略NA)
get_mode <- function(x) {
  ux <- unique(na.omit(x))
  ux[which.max(tabulate(match(x, ux)))]
}

library(dplyr)

# 按name分组替换NA为组内众数
d_clean_mode <- d %>%
  group_by(name) %>%
  mutate(pos = ifelse(is.na(pos), get_mode(pos), pos)) %>%
  ungroup()

该方法适合组内存在多个非NA值的场景,会自动选择出现次数最多的类别填充NA。

方法二:替换为组内首次出现的非NA值

如果只需用组内第一个出现的有效标签填充,代码更简洁:

library(dplyr)

# 按name分组替换NA为组内首个非NA值
d_clean_first <- d %>%
  group_by(name) %>%
  mutate(pos = ifelse(is.na(pos), first(na.omit(pos)), pos)) %>%
  ungroup()

两种方法都能批量处理所有分组,完全替代繁琐的case_when(),适配包含大量唯一name的大型数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:50:08