R语言如何为数据框每一行计算对应时间序列的AUC曲线下面积
R DataFrame 逐行计算AUC并生成新列方法
你可以直接用基础的apply函数按行遍历计算,不需要额外安装其他工具包,步骤如下:
- 首先加载DescTools包,同时定义所有行共用的时间点向量
library(DescTools) # 固定时间点x,所有行计算都用这个值 time_x <- c(0, 1, 3, 6, 9, 12)
- 按行遍历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
相关产品推荐
相关产品推荐

