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

R中如何对数值型数据框每行应用imputeTS包的na_ma函数插补缺失值

问题原因

你原有代码的问题在于:

  1. rowwise操作后未将行内的多列数据整合为单个向量传入na_ma
  2. 缺少对应的列赋值/转换逻辑,函数输出结果无法映射回原数据框结构

na_ma默认针对列向的时间序列做插补,要实现按行插补可以用以下两种方案:


方案1:Base R 实现(写法更简洁)

library(imputeTS)

# 按行应用na_ma,处理后转置回原数据框结构
data_imputed <- as.data.frame(t(apply(data, 1, function(x) {
  na_ma(x, k = 1, weighting = "simple")
})))

方案2:dplyr 风格实现(匹配你原有的管道写法习惯)

library(dplyr)
library(imputeTS)
library(tidyr)

data_imputed <- data %>%
  rowwise() %>%
  # 将当前行的所有列整合成向量传入na_ma
  summarise(imputed = list(na_ma(c_across(everything()), k = 1, weighting = "simple"))) %>%
  # 将插补后的列表拆分为独立列
  unnest_wider(imputed, names_sep = "_") %>%
  # 还原原数据的列名
  setNames(names(data))

两种方案运行后得到的结果与你给出的预期结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:03