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

如何在R语言中按组用邻近均值填充NA值

按组用邻近均值填充NA值的解决方案

问题原因

你之前的代码报错是因为在mutate中调用na_ma(stock$Price, ...)时,传入的是整个原始数据集的Price列,而group_by分组后每个组的行数远小于整个数据集的行数,导致返回结果的长度和当前组的行数不匹配,触发报错。

正确实现代码

使用dplyr分组后,直接传入组内的Price列(而非整个数据集的列)即可解决问题,结合imputeTS包的na_ma函数实现按组插补:

# 加载所需包
library(dplyr)
library(imputeTS)

# 构造示例数据集
stock <- tibble(
  Key = 1:8,
  Company_Name = c(rep("A", 5), rep("B", 3)),
  Price = c(12, 13, 12, NA, NA, 20, 21, NA)
)

# 按公司分组,用邻近均值插补NA
stock_filled <- stock %>%
  group_by(Company_Name) %>%
  # 直接使用组内的Price列,而非stock$Price
  mutate(Price = na_ma(Price, k = 2, weighting = "simple", fill = "extend")) %>%
  ungroup()

# 查看结果
print(stock_filled)

结果验证

运行后得到的结果与预期一致:

# A tibble: 8 × 3
    Key Company_Name Price
  <int> <chr>        <dbl>
1     1 A             12  
2     2 A             13  
3     3 A             12  
4     4 A             12.3
5     5 A             12.3
6     6 B             20  
7     7 B             21  
8     8 B             20.5

参数说明

  • k = 2:指定取前后各2个邻近值(最多4个)计算均值;
  • weighting = "simple":使用简单算术均值;
  • fill = "extend":当邻近值不足4个时(比如组内开头/结尾的NA),用现有可用的邻近值计算均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:37:16