使用R语言统计各区域医生数量:分组计数代码报错求助
解决方法
你的问题在于Region列的每个单元格包含多个以空格分隔的区域,直接按原Region分组统计,得到的是区域组合的医生数,而非单个区域的统计结果。正确的处理步骤如下:
- 先加载所需工具包(tidyverse整合了dplyr和tidyr,能高效处理这类数据操作):
library(tidyverse)
- 拆分
Region列,把每个区域拆分为单独的行:
doctors_split <- doctors %>% separate_rows(Region, sep = " ")
这一步会将类似"4 15"的单元格拆成两行,每行对应一个独立区域,同时保留对应的DoctorID信息。
- 统计每个区域的医生数量:
- 如果你需要统计每个区域的唯一医生数(即一个医生跨多个区域时,每个区域仅计一次),用下面的代码:
doctors_region <- doctors_split %>% group_by(Region) %>% summarise(doctor_count = n_distinct(DoctorID))
- 如果你需要统计每个区域的出现频次(包含同一医生在多个区域的重复计数),将
n_distinct(DoctorID)替换为n()即可。
- 查看最终统计结果:
doctors_region
举个实际例子,用你给出的两行样本数据:
原数据:
| DoctorID | Region |
| AHDCBA | 4 15 |
| ABHAHF | 1 8 T4 |
拆分后会变成:
| DoctorID | Region |
| AHDCBA | 4 |
| AHDCBA | 15 |
| ABHAHF | 1 |
| ABHAHF | 8 |
| ABHAHF | T4 |
最终统计结果为:
| Region | doctor_count |
|---|---|
| 4 | 1 |
| 15 | 1 |
| 1 | 1 |
| 8 | 1 |
| T4 | 1 |
内容的提问来源于stack exchange,提问作者user16464841
相关产品推荐
相关产品推荐

