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

如何在R数据框分组内用指定行值替换NA值(WAP场景)

解决方案

可以在你的分组处理逻辑中,先提取同分组下FiscalYear=2022对应的WAP_2021值作为填充基准,再用coalesce()替换WaP列的NA值。以下是完整的dplyr代码示例:

library(dplyr)

# 假设你的数据框名为df,已有初始生成WaP的逻辑
df_processed <- df %>%
  group_by(Material, Client, CompanyCode, STOCK_UOM) %>%
  mutate(
    # 第一步:按规则生成初始WaP列
    WaP = case_when(
      FiscalYear == 2022 ~ WAP_2021,
      FiscalYear == 2023 ~ coalesce(WAP_2022, WAP_2021),
      # 其他年份可根据需求补充,默认设为NA
      TRUE ~ NA_real_
    ),
    # 第二步:提取同分组下FiscalYear=2022的WAP_2021值作为填充值
    fill_wap = first(WAP_2021[FiscalYear == 2022]),
    # 第三步:替换WaP列中的NA值
    WaP = coalesce(WaP, fill_wap)
  ) %>%
  ungroup() %>%
  # 可选:删除临时生成的fill_wap列
  select(-fill_wap)

关键逻辑说明

  • first(WAP_2021[FiscalYear == 2022]):在每个分组内筛选出FiscalYear=2022的行,提取对应的WAP_2021值。如果分组内FiscalYear=2022的行唯一,first()能确保拿到正确值;若有多行,可根据实际情况替换为unique()或mean()等聚合函数。
  • coalesce(WaP, fill_wap):自动将WaP中的NA值替换为fill_wap,保留非NA的WaP原值,无需额外判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:31:22