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

如何使用dplyr为临床随访数据添加visit_number列

给术后随访数据添加随访次数列

我手头有一组患者术后随访的临床数据,数据按PT_CODE(患者编码)和PROCEDURE(手术类型)分组,每位患者可能接受过多次手术,数据里包含每次随访的DATE(日期)字段。

现有数据如下:

library(tidyverse)

# 当前数据
tribble(
  ~PT_CODE, ~PROCEDURE, ~DATE,
  "A", "A41", "Jun-01-2010",
  "A", "A41", "Aug-01-2011", 
  "A", "C29", "Jul-01-2012", 
  "A", "C29", "Jul-04-2013", 
  "B", "F64", "Sept-01-1989", 
  "B", "Q72", "Oct-01-1990", 
  "C", "S21", "Nov-01-1991", 
  "C", "S21", "Dec-01-1992", 
  "C", "S21", "Dec-01-1993", 
)

我需要添加一个visit_number列,用来统计每位患者对应某次手术的随访次数,目标数据如下:

# 目标数据
tribble(
  ~PT_CODE, ~PROCEDURE, ~DATE, ~visit_number,
  "A", "A41", "Jun-01-2010", 1,
  "A", "A41", "Aug-01-2011", 2,
  "A", "C29", "Jul-01-2012", 1,
  "A", "C29", "Jul-04-2013", 2,
  "B", "F64", "Sept-01-1989", 1,
  "B", "Q72", "Oct-01-1990", 1,
  "C", "S21", "Nov-01-1991", 1,
  "C", "S21", "Dec-01-1992", 2,
  "C", "S21", "Dec-01-1993", 3
)

我已经写了部分代码,需要补充完整:

data %>%
group_by(PT_CODE, PROCEDURE) %>%
arrange(DATE) %>%
_______?

解决方案

补充后的完整代码如下:

data %>%
  group_by(PT_CODE, PROCEDURE) %>%
  arrange(DATE) %>%
  mutate(visit_number = row_number()) %>%
  ungroup() # 可选,若后续不需要分组状态可取消分组

说明

  • group_by(PT_CODE, PROCEDURE):按患者编码和手术类型分组,确保随访次数是针对同一患者的同一次手术统计
  • arrange(DATE):对每个分组内的随访日期排序,保证随访次数按时间顺序生成
  • mutate(visit_number = row_number()):在每个分组内生成从1开始的连续序号,作为随访次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:39:15