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

在R中按行统计指定日期范围内外科医生的手术次数

用dplyr统计外科医生术前已完成手术次数

需求说明

现有包含1000名患者的数据集,患者接受同种手术但由不同外科医生操作。需统计每位外科医生从2023年6月27日(研究起始日)起,到当前患者手术日期之前完成的手术次数,并将该数值添加到对应患者的行中。

数据集示例

Patient Surgeon Operation Date  Event before index (operation date)
1       A       28/06/2023      0
2       A       29/06/2023      1
3       A       30/06/2023      2
4       B       1/07/2023       0
5       C       2/07/2023       1
6       C       3/07/2023       2

解决方案(使用dplyr)

核心思路是按外科医生分组,对手术日期排序后,计算累积符合条件的手术次数。

步骤1:处理日期格式

首先要确保手术日期是可比较的日期类型,避免字符串排序出错:

library(dplyr)
library(lubridate)

# 转换手术日期为日期类型(原格式为日/月/年)
df <- df %>%
  mutate(`Operation Date` = dmy(`Operation Date`))

步骤2:分组计算术前手术次数

按外科医生分组,排序后用累积求和统计术前符合条件的手术数:

# 定义研究起始日期
study_start <- ymd("2023-06-27")

df <- df %>%
  group_by(Surgeon) %>%
  # 按手术日期排序,保证计算顺序正确
  arrange(`Operation Date`, .by_group = TRUE) %>%
  # 计算当前手术前、且在研究起始日后的手术次数
  mutate(`Event before index (operation date)` = cumsum(`Operation Date` > study_start) - 1) %>%
  ungroup()

代码解释

  • dmy():将日/月/年格式的字符串转换为标准日期类型,确保时间比较准确。
  • group_by(Surgeon):仅在同一外科医生的手术范围内统计,避免跨医生计数。
  • arrange():按手术日期排序,保证累积求和的顺序是手术发生的先后顺序。
  • cumsum(Operation Date > study_start):统计从研究起始日到当前行的手术总数,减1是因为当前患者的手术不算在「术前完成」的次数里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:17:28