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

如何用R计算医疗服务每日病例负荷量并解决计算异常问题?

医疗病例负荷量随时间变化计算方案

数据预处理

首先转换日期格式,并处理未结案病例(Discharge.date为NA的病例,将其出院日期设为统计时间范围的最后一天,确保这类病例持续计入负荷直到统计结束):

# 转换日期列格式
df$Referral.date <- as.Date(df$Referral.date)
df$Discharge.date <- as.Date(df$Discharge.date)

# 定义统计时间范围(自动取数据中最早转诊日和最晚出院日,也可手动指定)
start_date <- min(df$Referral.date, na.rm = TRUE)
end_date <- max(c(df$Referral.date, df$Discharge.date), na.rm = TRUE)
# 若需固定统计到某一天,比如2019-01-01,替换为:
# end_date <- as.Date("2019-01-01")

# 处理未结案病例的NA值
df$Discharge.date[is.na(df$Discharge.date)] <- end_date

生成每日病例变化量

通过构造转诊(+1)和出院(-1)事件,按日期汇总每日的病例增减数:

# 构造转诊事件数据
referral_events <- data.frame(
  date = df$Referral.date,
  change = 1
)

# 构造出院事件数据
discharge_events <- data.frame(
  date = df$Discharge.date,
  change = -1
)

# 合并所有事件并按日期汇总
all_events <- rbind(referral_events, discharge_events)
daily_changes <- aggregate(change ~ date, data = all_events, sum)

计算每日病例负荷量

生成完整日期序列,填充无变化日期的数值,最终通过累积求和得到每日负荷:

# 生成连续日期序列
date_seq <- data.frame(date = seq(start_date, end_date, by = "day"))

# 合并日期序列与每日变化,无变化日期设为0
daily_changes <- merge(date_seq, daily_changes, by = "date", all.x = TRUE)
daily_changes$change[is.na(daily_changes$change)] <- 0

# 计算每日负荷:累积求和
daily_changes$daily.caseload <- cumsum(daily_changes$change)

解决异常波动问题

你遇到的骤降问题核心原因是未处理NA值或日期序列不完整:

  • 未结案病例的NA出院日期会导致该病例提前从负荷中移除,统一设为统计结束日可避免此问题
  • 完整的日期序列确保每一天的增减都被连续计算,不会出现断层导致的累积错误

结果可视化验证

用ggplot快速查看负荷变化趋势:

library(ggplot2)
ggplot(daily_changes, aes(x = date, y = daily.caseload)) +
  geom_line(color = "#2c3e50") +
  labs(x = "日期", y = "每日病例负荷量", title = "病例负荷随时间变化") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:13:24