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

如何在R语言中基于多列分组为新列分配数值ID

为多列唯一组合分配唯一ID的解决方案

数据示例

先看前后的转换效果:

原数据

# 模拟从CSV加载的数据
df <- tibble(
  Cancer = c("TA", "TA", "TB", "TA"),
  Lymph = c("N0", "N0", "N1", "N0"),
  Immunotherapy = c(1, 2, 1, 1)
)

输出样式:

CancerLymphImmunotherapy
TAN01
TAN02
TBN11
TAN01

处理后的数据

CancerLymphImmunotherapyID
TAN011
TAN022
TBN113
TAN011

两种dplyr实现方法

方法1:分组后用cur_group_id()

这是最贴合dplyr workflow的方式,按目标列分组后,cur_group_id()会自动为每个唯一组合分配递增的ID:

library(dplyr)

# 加载CSV数据
df <- read.csv("your_file.csv")

# 添加ID列
df_with_id <- df %>%
  group_by(Cancer, Lymph, Immunotherapy) %>%
  mutate(ID = cur_group_id()) %>%
  ungroup()  # 记得取消分组,避免后续操作干扰

方法2:因子转换法

如果不想分组,可以把三列的组合拼接成字符串,转成因子后再转成整数,同样能得到唯一ID:

df_with_id <- df %>%
  mutate(ID = as.integer(factor(paste(Cancer, Lymph, Immunotherapy))))

你之前失败的可能原因

如果之前用group_by() + mutate()没成功,大概率是用错了函数——比如误用row_number()(会生成组内的行号,不是组的唯一ID),而不是cur_group_id()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:40:54