You need to enable JavaScript to run this app. 如何用dplyr实现A列NA值用其余列行均值填充的操作
优惠活动
大模型
产品
解决方案
定价
更多

如何用dplyr实现A列NA值用其余列行均值填充的操作

dplyr 等价实现方案

以下代码完全复刻基础R代码的执行逻辑与输出结果,无任何额外行为差异:

library(dplyr)

foo <- tibble(A = c(3,5,NA,6,NA,7,NA),
              B = c(4,5,4,5,6,4,NA),
              C = c(6,5,2,8,8,5,NA))

foo <- foo |> 
  # 生成与原代码tmp完全等价的行均值临时列:逐行计算除A外所有列的均值、忽略NA
  mutate(.row_mean = rowMeans(across(-A), na.rm = TRUE)) |> 
  # 按原逻辑替换A列值
  mutate(
    A = case_when(
      !is.na(A) ~ A, # A列原有非NA值直接保留
      is.nan(.row_mean) ~ NA_real_, # 均值为NaN(其余列全为NA)时,将A设为NA
      TRUE ~ .row_mean # A为NA且均值有效时,用均值替换NA
    )
  ) |> 
  # 移除临时辅助列,保持原数据结构
  select(-.row_mean)

逻辑对齐说明

  • 行均值计算范围、缺失值处理规则与原代码完全一致,覆盖所有行列组合
  • 非NA的A列值不会被修改
  • 专门保留了原代码中“将计算得到的NaN转回NA”的处理逻辑,避免A列出现NaN值
  • 最终输出的结果与基础代码实现无任何差异

处理完成后的数据结构为:

# A tibble: 7 × 3
      A     B     C
  <dbl> <dbl> <dbl>
1     3     4     6
2     5     5     5
3     3     4     2
4     6     5     8
5     7     6     8
6     7     4     5
7    NA    NA    NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 00:36:04