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

如何在R中更优雅地计算不同时间点的肿瘤生长率及均值?

在R中优雅计算肿瘤生长率及平均生长率的方法

核心思路

先按肿瘤分组,计算每个随访间隔的生长率(尺寸变化÷月份间隔),再对每个肿瘤的所有间隔生长率取平均得到单肿瘤生长率,最后计算所有肿瘤的整体平均生长率。用dplyr包可实现简洁的批量处理,彻底替代手动计算的繁琐操作。

步骤与代码示例

1. 准备数据

假设你的数据是长格式(每行对应一个肿瘤的一次随访记录,包含肿瘤ID、随访月份、肿瘤尺寸),先模拟一份示例数据:

set.seed(123)
library(dplyr)

# 模拟长格式随访数据
tumor_data <- tibble(
  tumor_id = rep(1:3, each = 4),  # 3个肿瘤,每个4次随访
  follow_up_month = c(0, 2, 12, 23, 0, 5, 15, 20, 0, 3, 8, 15),  # 随访时间(月)
  size_cm = c(2.5, 2.3, 3.0, 2.9, 1.8, 2.0, 2.5, 2.7, 3.2, 3.0, 3.5, 3.3)  # 肿瘤尺寸(cm)
)

如果你的数据是宽格式(每行是一个肿瘤,列是不同时间点的月份和尺寸),可先转成长格式:

# 模拟宽格式数据
wide_tumor_data <- tibble(
  tumor_id = 1:3,
  t1_month = 0, t1_size = c(2.5,1.8,3.2),
  t2_month = c(2,5,3), t2_size = c(2.3,2.0,3.0),
  t3_month = c(12,15,8), t3_size = c(3.0,2.5,3.5),
  t4_month = c(23,20,15), t4_size = c(2.9,2.7,3.3)
)

# 宽转长
long_data <- wide_tumor_data %>%
  tidyr::pivot_longer(
    cols = -tumor_id,
    names_to = c("time_point", ".value"),
    names_pattern = "t(\\d+)_(month|size)"
  ) %>%
  arrange(tumor_id, time_point)

2. 计算生长率

用dplyr的分组、突变、汇总功能一键完成:

# 计算单肿瘤平均生长率 + 整体平均生长率
growth_result <- tumor_data %>%
  arrange(tumor_id, follow_up_month) %>%  # 确保每个肿瘤的随访按时间排序
  group_by(tumor_id) %>%
  mutate(
    size_change = size_cm - lag(size_cm),  # 相邻随访的尺寸变化
    month_interval = follow_up_month - lag(follow_up_month),  # 随访间隔月份
    interval_growth_rate = size_change / month_interval  # 单个间隔的生长率
  ) %>%
  summarise(avg_tumor_growth = mean(interval_growth_rate, na.rm = TRUE)) %>%  # 单肿瘤平均生长率
  ungroup() %>%
  mutate(overall_avg_growth = mean(avg_tumor_growth))  # 所有肿瘤的平均生长率

# 查看结果
print(growth_result)

代码说明

  • arrange():确保每个肿瘤的随访记录按时间顺序排列,避免计算相邻时间点时出错。
  • group_by(tumor_id):按肿瘤分组,实现每个肿瘤单独计算。
  • lag():获取上一次随访的数值,用来计算尺寸变化和时间间隔,首次随访的结果为NA,后续用na.rm=TRUE忽略。
  • summarise():对每个肿瘤的所有间隔生长率取平均,得到单肿瘤的平均生长率;最后再计算整体平均。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:05:05