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

在R中按医院分类,将不同性别患者疼痛评分排名后导出至对应Excel文件

按医院拆分并导出分性别排序的Excel文件

前置准备

首先安装并加载openxlsx包(无需Java依赖,支持多工作表写入):

install.packages("openxlsx")
library(openxlsx)

修正模拟数据

原模拟数据中patient_gender存在拼写错误(femal应为female),修正后的完整模拟代码:

set.seed(123) # 设置随机种子保证结果可复现
id_hospital =  sample(1:35, 1000, replace = T)
id_patient =  sample(1:1000, 1000, replace = F)
hos_name = paste0('hos_', 1:35)
hospital = sample(hos_name, 1000, replace = T)
patient_gender = c("male", "female") # 修正拼写错误
Gender = sample(patient_gender, 1000, replace = T)
pain_score = runif(1000, min=0.00, max =100.00)  

df = data.frame(id_hospital, id_patient, hospital, Gender, pain_score)

核心实现代码

遍历每家医院,拆分男女患者数据并按pain_score排序,最终导出对应Excel文件:

# 获取所有唯一医院名称
unique_hospitals <- unique(df$hospital)

# 遍历每家医院
for(hos in unique_hospitals){
  # 筛选当前医院的所有数据
  hos_data <- subset(df, hospital == hos)
  
  # 拆分并排序女性患者数据(sheet1),按pain_score降序,改为ascending=TRUE可实现升序
  female_data <- hos_data[hos_data$Gender == "female", ]
  female_sorted <- female_data[order(-female_data$pain_score), ]
  
  # 拆分并排序男性患者数据(sheet2)
  male_data <- hos_data[hos_data$Gender == "male", ]
  male_sorted <- male_data[order(-male_data$pain_score), ]
  
  # 创建新的Excel工作簿
  wb <- createWorkbook()
  
  # 添加sheet1:女性患者排序数据
  addWorksheet(wb, sheetName = "sheet1")
  writeData(wb, sheet = "sheet1", x = female_sorted)
  
  # 添加sheet2:男性患者排序数据
  addWorksheet(wb, sheetName = "sheet2")
  writeData(wb, sheet = "sheet2", x = male_sorted)
  
  # 保存工作簿,文件名与医院名称一致
  saveWorkbook(wb, file = paste0(hos, ".xlsx"), overwrite = TRUE)
}

关键说明

  • 排序规则:代码默认按pain_score降序排名,若需升序,将order(-xxx)改为order(xxx)即可
  • 文件覆盖:overwrite = TRUE会自动覆盖同名文件,如需避免覆盖可删除该参数或设为FALSE
  • 边界处理:若某医院某性别无数据(题目说明每家均有,此处仅作提示),对应工作表会写入空数据框

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:55:19