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

如何基于医院-医生组合生成唯一surgeon_unique标识变量?

生成医院-医生组合的唯一整数标识

以下是几种无需手动编写大量case_when代码的实现方案,均能自动为每个hospital*surgeon的唯一组合分配0起始的唯一整数:

方法1:dplyr(tidyverse)实现

利用分组索引函数自动识别唯一组合:

library(dplyr)

# 方案A:使用group_indices
df <- df %>%
  mutate(surgeon_unique = group_indices(., hospital, surgeon) - 1)

# 方案B:通过因子转换
df <- df %>%
  mutate(surgeon_unique = as.integer(factor(paste(hospital, surgeon, sep = "_"))) - 1)
  • group_indices会按hospital和surgeon的组合生成从1开始的组号,减1后得到0起始的标识
  • 因子转换方案先将两个变量拼接为唯一字符串,再转成整数索引,同样通过减1实现0起始

方法2:Base R实现

无需加载额外包,用interaction函数生成交互因子:

df$surgeon_unique <- as.integer(interaction(df$hospital, df$surgeon, drop = TRUE)) - 1
  • drop = TRUE会忽略未在数据中出现的医院-医生组合,避免生成无效索引
  • 转换为整数后减1,得到0起始的唯一标识

方法3:data.table实现(适合大数据集)

如果处理的是大规模数据集,data.table的分组操作效率更高:

library(data.table)
setDT(df)

df[, surgeon_unique := .GRP - 1, by = .(hospital, surgeon)]
  • .GRP会为每个by指定的分组分配唯一组号,减1后得到0起始的标识

注意事项

  • 所有方案生成的surgeon_unique范围为0到(唯一组合数-1),符合你0-100的需求(因总组合约100个)
  • 若需要固定的索引顺序,可在因子转换时添加ordered = TRUE,或在group_indices中指定sort = TRUE

内容的提问来源于stack exchange,提问作者Floris B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:25:04