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

采用Last Observation Carried Backward填充患者数据连续NA值的R实现需求

问题描述

现有患者数据框,需对Start_Window字段的NA值按以下规则替换:

  • 同一患者下的连续NA段,用该段最后一行的Start_Date向前填充整个连续段
  • 单个NA值直接使用对应行的Start_Date填充

原始数据如下:

行号(Row_Num)患者ID(Patient_ID)起始日期(Start_Date)起始窗口(Start_Window)
10012023-04-012023-04-01
20012023-04-03NA
30012023-04-05NA
40012023-04-06NA
50012023-04-08NA
60012023-04-092023-04-09
70012023-04-112023-04-11
80012023-04-13NA
90012023-04-16NA
100012023-04-182023-04-18
110022023-04-022023-04-02
120022023-04-042023-04-04
130022023-04-072023-04-07
140022023-04-082023-04-08
150022023-04-10NA

可复现代码:

# 创建数据框
df <- data.frame(
  Row_Num = c(1:15),
  Patient_ID = c(rep(001, 10), rep(002, 5)),
  Start_Date = c("2023-04-01", "2023-04-03", "2023-04-05", "2023-04-06", "2023-04-08",
                 "2023-04-09", "2023-04-11", "2023-04-13", "2023-04-16", "2023-04-18",
                 "2023-04-02", "2023-04-04", "2023-04-07", "2023-04-08", "2023-04-10"),
  Start_Window = c("2023-04-01", NA, NA, NA, NA, "2023-04-09", "2023-04-11", NA, NA, "2023-04-18",
                   "2023-04-02", "2023-04-04", "2023-04-07", "2023-04-08", NA)
)

# 打印数据框
print(df)
解决方案

使用dplyr包实现分组处理,步骤如下:

  1. 将日期列转换为Date类型,避免字符操作问题
  2. 按患者ID分组,识别连续的NA段
  3. 对每个NA段,用组内最后一行的Start_Date填充;单个NA直接使用本行Start_Date

完整代码:

library(dplyr)

# 转换日期列类型
df <- df %>%
  mutate(
    Start_Date = as.Date(Start_Date),
    Start_Window = as.Date(Start_Window)
  )

# 处理NA填充
df_processed <- df %>%
  group_by(Patient_ID) %>%
  # 创建NA分组标记:连续的NA为同一组,非NA标记为0
  mutate(
    na_group = cumsum(!is.na(Start_Window))
  ) %>%
  group_by(Patient_ID, na_group) %>%
  # 对每个NA组,用组内最后一行的Start_Date填充
  mutate(
    Start_Window = ifelse(is.na(Start_Window), last(Start_Date), Start_Window)
  ) %>%
  ungroup() %>%
  select(-na_group) # 移除临时分组列

# 查看结果
print(df_processed)
结果验证

处理后的数据符合要求:

  • 行2-5的Start_Window统一填充为2023-04-08
  • 行8-9的Start_Window统一填充为2023-04-16
  • 行15的Start_Window填充为2023-04-10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:24:55