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

制作医疗提供者城市年度统计表格时数值异常归零问题求助

解决医疗提供者年度数量统计表格问题

你之前使用三维table()的方式会生成冗余维度,后续转置操作逻辑也有误,导致出现错误的0值。以下是两种直接可行的实现方案:

方法一:用tidyverse(dplyr)构建目标表格

这种方式逻辑清晰,适合处理分组统计需求:

# 加载dplyr包
library(dplyr)

# 按城市、年份分组统计总数(如需仅统计提供服务的,取消filter行注释)
summary_table <- HCProvidersbyCity %>%
  # filter(Provides_Service == 1) %>%  # 可选:仅保留提供服务的记录
  group_by(City, Year) %>%
  summarise(Provider_Count = n(), .groups = "drop") %>%
  mutate(Year = ifelse(Year == 21, "2021", "2023")) %>%  # 转换年份为直观格式
  pivot_wider(names_from = City, values_from = Provider_Count, values_fill = 0)

# 查看结果
summary_table

方法二:用Base R实现

无需额外包,用原生函数完成统计:

# 统计城市-年份的提供者总数(如需仅统计提供服务的,添加subset参数)
count_data <- aggregate(
  x = list(Provider_Count = HCProvidersbyCity$Provides_Service),
  by = list(City = HCProvidersbyCity$City, Year = HCProvidersbyCity$Year),
  FUN = length,  # 统计所有提供者;若要统计提供服务的,替换为sum
  # subset = HCProvidersbyCity$Provides_Service == 1  # 可选:仅筛选提供服务的记录
)

# 转换年份格式
count_data$Year <- ifelse(count_data$Year == 21, "2021", "2023")

# 转换为宽表(年份为行、城市为列)
summary_table <- reshape(
  count_data,
  idvar = "Year",
  timevar = "City",
  direction = "wide",
  v.names = "Provider_Count"
)

# 清理列名前缀
colnames(summary_table) <- gsub("Provider_Count\\.", "", colnames(summary_table))

# 查看结果
summary_table

关键说明

  • 若统计所有提供者总数:用n()(dplyr)或length()(Base R);若统计仅提供服务的提供者数量:用sum(Provides_Service)(dplyr)或sum(Base R的FUN参数),并可配合提前过滤记录。
  • values_fill = 0(dplyr)或reshape的默认补0逻辑,会为无数据的城市-年份组合填充0,保证表格结构完整。
  • 将年份转换为2021/2023格式,让表格可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:13:08