在R中解析含多诊断的Excel单元格,统计出院诊断频率
在R中拆分Excel出院诊断并统计各诊断出现频率
嘿,这个需求在临床数据分析里太常见了!我给你一套清晰的R实现步骤,保证能轻松搞定多诊断的拆分和频率统计:
第一步:准备所需的R包
我们需要用到几个常用的数据处理包,先安装并加载它们(如果还没装的话):
install.packages(c("readxl", "tidyr", "dplyr", "stringr")) library(readxl) library(tidyr) library(dplyr) library(stringr)
第二步:读取你的Excel数据
把下面的文件路径替换成你实际的Excel文件路径:
# 读取患者信息表格 patient_data <- read_excel("你的患者信息文件.xlsx")
第三步:拆分多诊断单元格并清理格式
关键一步来了!我们要把用/分隔的多个诊断拆成单独的行,同时还要处理掉诊断文本前后可能存在的空格(比如" 肺炎 / 高血压 "这种情况):
# 拆分诊断列,处理分隔符前后的空格 clean_diagnoses <- patient_data %>% # 按"/"拆分Discharge diagnosis列,兼容分隔符前后的空格 separate_rows(`Discharge diagnosis`, sep = "\\s*/\\s*") %>% # 去掉每个诊断文本前后的空格 mutate(`Discharge diagnosis` = str_trim(`Discharge diagnosis`))
这里用\\s*/\\s*作为分隔符,是为了兼容各种带空格的分隔情况,比如"/"前后有一个或多个空格都能正确拆分
第四步:统计诊断出现频率
现在可以轻松统计所有诊断的出现次数,还能按频次排序:
# 统计每个诊断的出现频次,并按频次从高到低排序 diagnosis_frequency <- clean_diagnoses %>% count(`Discharge diagnosis`, name = "出现频次") %>% arrange(desc(`出现频次`)) # 查看统计结果 print(diagnosis_frequency)
快速查询特定诊断的频次
如果你想单独查某一个诊断(比如"2型糖尿病")的出现次数,可以用这段代码:
# 替换成你要查询的诊断名称 target_diagnosis <- "2型糖尿病" # 获取目标诊断的频次,没有匹配项则返回0 target_freq <- diagnosis_frequency %>% filter(`Discharge diagnosis` == target_diagnosis) %>% pull(`出现频次`) %>% ifelse(length(.) == 0, 0, .) cat(paste0(target_diagnosis, "的出现频次是:", target_freq))
额外提示
如果你的诊断文本还有其他格式问题(比如大小写不一致、缩写不同),可以用str_to_lower()统一转成小写,或者用str_replace()做文本替换,确保统计的准确性。
内容的提问来源于stack exchange,提问作者doop
相关产品推荐
相关产品推荐

