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

如何用R确定患者接听电话的最优星期与小时组合时段

找出患者电话最易接听的星期与时段

问题背景

需要确定拨打患者电话时接听量最高的星期+小时时段(如周三13:00-14:00),已完成以下数据处理:

  • 将日期转换为星期几(dow字段)
  • 将picked_up的Yes/No转为二进制变量(1表示接听,0表示未接听)
  • 将时间划分为09:00-18:00的小时分箱

遇到两个问题:

  1. 手动遍历所有星期+小时组合统计接听量效率太低,尝试max和which.max未得到预期结果
  2. 编写的ggplot代码生成的各星期图表几乎完全相同,无法反映不同星期的时段差异

样本数据与预处理代码

样本数据

df <- data.frame(time  = c("09:55", "10:10", "10:15", "10:55", 
                 "12:35", "13:45", "15:30", "15:45", "17:00", 
                 "11:15"),
                 date = c("2023-05-19", "2023-05-12", "2023-05-24", "2023-05-12", "2023-05-24", "2023-05-24", 
                 "2023-05-16", "2023-05-14", "2023-05-16", "2023-05-18"), 
                 picked_up = c("No", "No", "No", "No", "Yes", 
                 "Yes", "No", "No", "Yes", "Yes")) 

数据预处理

# 日期转星期几
df$dow <- weekdays(as.Date(df$date))

# 接听状态转二进制
df$binary <- if_else(df$picked_up == "Yes", 1, 0)

# 时间转小时分箱(如09:55转为09:00)
df$hour <- format(strptime(df$time, "%H:%M"), "%H:00")  

解决方案

1. 快速定位接听量最高的星期+时段

无需手动遍历,通过dplyr同时按星期和小时分组求和,再提取最大值即可:

# 按星期+小时分组统计接听总数
freq_day_hour <- df %>%
  group_by(dow, hour) %>%
  summarize(total_picked = sum(binary), .groups = "drop")

# 提取接听量最高的时段(若有多个并列最大值会全部返回)
top_slot <- freq_day_hour %>%
  slice_max(total_picked, n = 1)

print(top_slot)

样本数据运行结果示例:

# A tibble: 4 × 3
  dow       hour   total_picked
  <chr>     <chr>         <dbl>
1 Friday    11:00             1
2 Wednesday 12:00             1
3 Wednesday 13:00             1
4 Tuesday   17:00             1

2. 修复ggplot图表重复问题

原代码中连续两次group_by会覆盖之前的分组规则,仅按hour全局统计接听量,导致各星期图表数值完全一致。正确做法是同时按dow和hour分组:

df %>%
  group_by(dow, hour) %>%
  mutate(resp = sum(binary)) %>%
  ungroup() %>%
  ggplot(aes(x = hour, y = resp)) +
  geom_point() +
  ylab("接听次数") +
  xlab("时段") +
  facet_wrap(vars(dow))

修改后,每个分面会显示对应星期各时段的实际接听次数,不会再出现重复的图表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:30:32