如何将日期格式数据转换为R时间依赖生存分析所需格式?
日期格式转时间依赖生存分析数据格式操作指南
核心逻辑
把日期记录转换为以研究起始日为基准的天数区间,每个区间对应一段观察期,仅在事件发生的最后一行标记death=1。
具体步骤(R语言实现)
1. 加载数据并转换日期类型
先把字符格式的日期转为R可识别的Date类型,指定格式为dd-mm-yyyy:# 模拟原始数据 df <- data.frame( subject = c(5,5,5,5), date = c("01-01-2022", "01-04-2022", "01-05-2022", "05-07-2022"), death = c(0,0,0,1), creatinine = c(0.9,1.5,1.2,1.2) ) # 转换日期格式 df$date <- as.Date(df$date, format = "%d-%m-%Y")2. 计算基准天数
以第一条记录的日期为时间原点(time=0),计算每条记录对应的天数:df$time <- as.numeric(df$date - df$date[1])3. 生成time1和time2列
通过移位操作生成区间的起始和终止时间,同时调整death列(仅最后一行保留1):# 生成time1:前一行的time值,第一行设为0 df$time1 <- c(0, df$time[-nrow(df)]) # 生成time2:当前行的time值 df$time2 <- df$time # 调整death列:仅最后一行保留1,其余设为0 df$death <- c(rep(0, nrow(df)-1), 1)4. 整理最终格式
保留需要的列,得到目标格式:final_df <- df[, c("subject", "time1", "time2", "death", "creatinine")]
转换后结果
subject time1 time2 death creatinine 5 0 90 0 0.9 5 90 120 0 1.5 5 120 151 0 1.2 5 151 185 1 1.2
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

