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

在R语言中提取患者多次随访数据的末次随访天数并新增列

问题

我有一个记录患者移植后随访数据的dataframe,包含两个变量:

  • patient_ID(患者标识)
  • days_tx_followup(移植至随访事件的间隔天数)

每行对应一次随访,每位患者的随访次数及随访间隔天数均不相同。需要提取每位患者末次随访的间隔天数,并在该患者的所有随访记录行中新增一列last_followup存储该值。真实数据集约有15000名患者,尝试从嵌套dataframe中提取该值但未成功。

示例数据:

patient_ID <- c("A", "A", "A", "A", "B", "B", "C", "C", "C")
days_tx_followup <- c(0, 5, 10, 15, 2, 4, 1, 2, 3)
df <- data.frame(patient_ID, days_tx_followup)

初始dataframe输出:

patient_ID days_tx_followup
1          A                0
2          A                5
3          A               10
4          A               15
5          B                2
6          B                4
7          C                1
8          C                2
9          C                3

期望输出:

patient_ID days_tx_followup last_followup
1          A                0            15
2          A                5            15
3          A               10            15
4          A               15            15
5          B                2             4
6          B                4             4
7          C                1             3
8          C                2             3
9          C                3             3
解决方案

以下是几种适配大数据场景的高效处理方案:

方法1:使用dplyr(tidyverse生态)

代码可读性强,适合常规数据分析流程:

library(dplyr)

df <- df %>%
  group_by(patient_ID) %>%
  mutate(last_followup = max(days_tx_followup)) %>%
  ungroup()

方法2:使用data.table(大数据优化)

针对大规模数据性能更优,适配15000患者的数据集:

library(data.table)

setDT(df)
df[, last_followup := max(days_tx_followup), by = patient_ID]

方法3:使用Base R(无需额外包)

无需加载第三方依赖,轻量实现需求:

df$last_followup <- ave(df$days_tx_followup, df$patient_ID, FUN = max)

以上三种方法均可快速计算每位患者的末次随访天数,并将该值填充至对应患者的所有行中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:54:15