如何用R统计指定列词汇出现次数并生成表格,含多物质使用分析
R语言SUD诊断统计解决方案
前置依赖安装
如果尚未安装所需工具包,先运行以下代码安装:
install.packages(c("tidyverse", "openxlsx"))
问题1:同名诊断重复统计修复
出现同名诊断拆分统计的核心原因是原数据中逗号后带空格,拆分后部分诊断项带前导空格被识别为不同类别,修复代码如下:
# 加载工具包 library(tidyverse) library(openxlsx) # 读入数据:如果是xlsx格式,替换为 read_excel("你的文件路径.xlsx") SUB_DATA <- read.csv("SUD_FILE.csv", stringsAsFactors = FALSE) # 统计全人群各诊断总患病人数 diagnosis_total <- SUB_DATA %>% # 按逗号+任意数量空格拆分诊断项,自动去除前导空格 mutate(diag_item = str_split(Dx.Axis.I, ",\\s*")) %>% unnest(diag_item) %>% # 按诊断分组计数 count(diag_item, name = "总患病人数") %>% rename(诊断名称 = diag_item)
问题2:多诊断人群诊断统计
先筛选出诊断数量大于1的样本,再统计各诊断的患病人数:
diagnosis_multi <- SUB_DATA %>% mutate(diag_list = str_split(Dx.Axis.I, ",\\s*"), # 计算每行的诊断数量 diag_count = lengths(diag_list)) %>% # 筛选同时患有1种以上诊断的人群 filter(diag_count > 1) %>% unnest(diag_list) %>% count(diag_list, name = "多诊断人群患病人数") %>% rename(诊断名称 = diag_list)
结果导出为Excel
可将两个统计结果存入同一个Excel的不同工作表:
output_list <- list( "全人群诊断统计" = diagnosis_total, "多诊断人群诊断统计" = diagnosis_multi ) write.xlsx(output_list, file = "SUD诊断统计结果.xlsx", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者Adnel Figueroa
相关产品推荐
相关产品推荐

