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

如何用dplyr按时间间隔拆分数据行并更新协变量

使用dplyr按12个月间隔拆分随访数据

原始数据

患者随访数据框p如下,每行对应一名患者的随访记录:

p <- structure(list(id = 1:3, treatment = structure(c(1L, 1L, 1L), levels = c("SSTR", 
                                                                             "SSA", "Control"), class = "factor"), age = c(31.3, 36.9, 44.6
                                                                             ), sex = structure(c(1L, 1L, 2L), levels = c("0", "1"), class = "factor"), 
               progression = c(0L, 1L, 1L), pfs = c(15.6, 8.9, 25.5)), row.names = c(NA, 
                                                                                   3L), class = "data.frame")

打印后的数据结构:

id treatment  age sex progression  pfs
1  1      SSTR 31.3   0           0 15.6
2  2      SSTR 36.9   0           1  8.9
3  3      SSTR 44.6   1           1 25.5

需求说明

需按每12个月的随访间隔拆分每行数据:

  • 不变协变量:id、treatment、sex(及其他同类变量)
  • 需更新的变量:
    • age:每个时间间隔增加1岁(每12个月增长1岁)
    • 将pfs拆分为start和stop,标识每个12个月间隔的起止时间
    • 新增interval字段,标识间隔序号(0-12月为1,12-24月为2,以此类推)
  • 仅在患者最后一个随访间隔保留原progression值,其余间隔该字段设为0

解决方案(dplyr实现)

library(dplyr)
library(tidyr)

p_processed <- p %>%
  # 计算每个患者需要拆分的间隔总数
  mutate(n_intervals = ceiling(pfs / 12)) %>%
  # 按id拆分成多行长格式,生成间隔序号
  uncount(n_intervals, .id = "interval") %>%
  # 计算每个间隔的起止时间、更新年龄和进展状态
  mutate(
    start = (interval - 1) * 12,
    stop = pmin(interval * 12, pfs),
    age = age + (interval - 1),
    progression = ifelse(stop == pfs, progression, 0)
  ) %>%
  # 调整列顺序匹配预期输出
  select(id, treatment, sex, age, progression, start, stop, interval)

print(p_processed)

输出结果

id treatment sex  age progression start stop interval
1  1      SSTR   0 31.3           0     0 12.0        1
2  1      SSTR   0 32.3           0    12 15.6        2
3  2      SSTR   0 36.9           1     0  8.9        1
4  3      SSTR   1 44.6           0     0 12.0        1
5  3      SSTR   1 45.6           0    12 24.0        2
6  3      SSTR   1 46.6           1    24 25.5        3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:02:08