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

R语言如何基于分桶健康对照的均值标准差生成患者标准化评分

实现代码

你已经完成了分桶和健康人群统计值计算的前置步骤,直接用purrr::pmap遍历三个对应分桶的列表,结合dplyr的列操作即可实现需求:

第一步:先指定需要标准化的指标列

# 按需调整要做标准化的列名即可
cols_to_scale <- c("age", "length")

第二步:遍历分桶批量计算标准化值

library(purrr)
library(dplyr)

# 先校验三个列表的分桶顺序一致,避免对应错误(如果列表已按bucket命名可以加这一步)
allpatients <- allpatients[sort(names(allpatients))]
healthypatients_mean <- healthypatients_mean[sort(names(healthypatients_mean))]
healthypatients_sd <- healthypatients_sd[sort(names(healthypatients_sd))]

# 批量计算标准化评分
scaled_all_patients <- pmap(
  # 传入三个顺序一一对应的分桶列表
  .l = list(allpatients, healthypatients_mean, healthypatients_sd),
  .f = function(patient_df, h_mean, h_sd) {
    patient_df %>%
      # 对指定列逐列执行标准化计算
      mutate(across(all_of(cols_to_scale), 
                    ~ (.x - h_mean[[cur_column()]]) / h_sd[[cur_column()]]))
  }
) %>% 
  # 合并所有分桶结果为完整数据集
  bind_rows()

逻辑说明

  • pmap会同时遍历三个列表的对应位置元素,确保同一个bucket的患者数据、健康均值、健康标准差配对处理,不会出现匹配错误
  • across + cur_column()可以自动匹配当前处理列对应的均值和标准差,不需要逐个列写计算逻辑,新增要标准化的指标只需要修改cols_to_scale即可
  • 最终输出的scaled_all_patients就是所有患者标准化后的全量数据集,和你给出的示例格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:36:07