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

如何在R中使用dplyr基于前一行及变量填充列Y?

基于dplyr填充Y列缺失值的解决方案

给定如下数据框:

IndexABY
1211
221NA
321NA
421NA

需要按照公式 Y = 前一行Y值 + A - B 填充Y列的NA值,以下是基于dplyr的实现方案:

步骤1:加载必要的包并构造示例数据

library(dplyr)
library(purrr) # 配合使用accumulate函数处理累积计算

# 构造示例数据框
df <- tibble(
  Index = 1:4,
  A = rep(2, 4),
  B = rep(1, 4),
  Y = c(1, NA, NA, NA)
)

步骤2:计算并填充Y列

df_filled <- df %>%
  mutate(
    Y = accumulate(seq_along(Y), .init = Y[1], function(prev_y, i) {
      # 当前行Y非NA则保留原值,否则用前一行Y值 + 当前行A-B计算
      if (!is.na(Y[i])) Y[i] else prev_y + A[i] - B[i]
    }) %>% tail(-1) # 移除accumulate返回的初始值,匹配原数据行数
  )

最终结果

运行代码后,df_filled的输出与预期一致:

IndexABY
1211
2212
3213
4214

如果数据需要按某列分组填充,只需在mutate前添加group_by(分组列)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:20:39