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

计算各外科专科手术取消均值遇异常结果求助

解决手术取消均值计算异常问题

问题根源

你的数据集是已汇总的分组统计数据,每一行对应某个专科(Service)下「取消/未取消」的手术数量(n列),而非单条手术记录的状态。你当前的代码没有利用n列的计数权重,错误地将每一行视为同等权重的样本,导致计算出的是「行的比例」而非「实际手术的比例」。

比如专科"C"有2行数据:取消338例、未取消38例,总手术数376例。你的代码会计算mean(c(TRUE, FALSE))*100=50%,但实际取消率应该是338/(338+38)*100≈89.89%,这就是结果异常的核心原因。

正确代码实现

方法1:先统计总数再计算比例

dt.1 <- dt %>%
  group_by(Service) %>%
  summarise(
    总手术数 = sum(n),
    取消手术数 = sum(n[binary == "Cancelled"]),
    取消率 = (取消手术数 / 总手术数) * 100,
    未取消率 = 100 - 取消率
  ) %>%
  select(Service, 取消率, 未取消率) # 按需保留列

方法2:用加权平均直接计算

dt.1 <- dt %>%
  group_by(Service) %>%
  summarise(
    取消率 = weighted.mean(binary == "Cancelled", w = n) * 100,
    未取消率 = weighted.mean(binary == "Not Cancelled", w = n) * 100
  )

两种方法都能得到符合实际的百分比结果,比如专科"C"的取消率约为89.89%,未取消率约为10.11%,完全匹配数据中的真实比例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:40:31