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

R语言如何为数据框每一行计算对应时间序列的AUC曲线下面积

R DataFrame 逐行计算AUC并生成新列方法

你可以直接用基础的apply函数按行遍历计算,不需要额外安装其他工具包,步骤如下:

  1. 首先加载DescTools包,同时定义所有行共用的时间点向量
library(DescTools)
# 固定时间点x,所有行计算都用这个值
time_x <- c(0, 1, 3, 6, 9, 12)
  1. 按行遍历DataFrame计算AUC,直接赋值给新列即可
    假设你的原始DataFrame名称为df,且6列顺序和时间点顺序完全对应:
# MARGIN=1代表按行遍历,每一行的数值会作为y传入AUC函数
df$AUC_value <- apply(df, MARGIN = 1, FUN = function(y) {
  AUC(x = time_x, y = y, method = "linear", na.rm = FALSE)
})

注意事项

  • 如果你的DataFrame中除了6个时间点列之外还有其他列(比如样本ID、分组列等),需要在apply时仅选择6个时间点对应的列:
    比如6个时间点列是df的第2到第7列,代码修改为:
    df$AUC_value <- apply(df[, 2:7], MARGIN = 1, FUN = function(y) {
      AUC(x = time_x, y = y, method = "linear", na.rm = FALSE)
    })
    
  • 如果数据存在缺失值需要忽略,直接将na.rm参数改为TRUE即可
  • 数千行的数据用该方法计算速度很快,不需要做额外的性能优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:36:04