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

如何使用tmerge将随访数据拆分为带tstart/tstop的5年间隔格式

使用tmerge构建5年间隔计数过程格式生存数据操作步骤

前置准备

你需要使用R语言的survival包完成操作,首先加载依赖包:

library(survival)

首先统一单位换算:5年按每年365.25天折算为1826天,可根据研究精度要求调整该数值。

步骤1:梳理原始数据字段

确认你的数据集包含以下核心字段:

  • ID:个体唯一识别码
  • 随访时长(天):下文代码中统一用futime指代,你需要替换为实际字段名
  • event:结局事件标识,通常0=删失、1=发生目标事件
  • 其他固定协变量:如variable 1、variable 2等

步骤2:初始化基础生存数据结构

首先生成每个个体的初始生存记录,初始区间为从入组(时间0)到随访结束:

# 构建基础数据框,筛选需要的字段
base_df <- original_df[, c("ID", "futime", "event", "variable1", "variable2")]

# 初始化计数过程结构,生成初始tstart、tstop字段
surv_base <- tmerge(
  data1 = base_df,
  data2 = base_df,
  id = ID,
  event = event(futime, event)
)

此时生成的surv_base中,每个ID对应1行记录,tstart默认为0,tstop为个体的总随访时长。

步骤3:按5年间隔切割区间

先生成全数据集的时间切割点,再用tmerge插入切割点拆分区间:

# 计算全数据集最大随访时长,生成所有5年间隔的切割点
max_futime <- max(base_df$futime)
cut_points <- seq(from = 1826, to = max_futime, by = 1826)

# 插入切割点,生成最终的5年间隔数据集
final_surv_df <- tmerge(
  data1 = surv_base,
  data2 = base_df,
  id = ID,
  tdc(cut_points)
)

结果校验

生成的final_surv_df包含你需要的tstart、tstop字段,你可以通过以下规则验证结果正确性:

  • 每个ID对应的所有区间长度tstop - tstart最大不超过1826天
  • 每个ID最后一行的tstop等于其原始总随访时长
  • 每个ID仅最后一行的event取值和原始数据一致,其余行的event均为0

注意事项

如果你的数据包含时依协变量,需要在tmerge步骤中额外添加时依协变量的更新逻辑,上述步骤仅适用于固定协变量的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:45:03