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

在R语言中为重复值分配索引值的实现方法

为重复ID分配递增索引的实现方法

以下是几种在R中实现为重复ID分配组内递增索引的常用方案:

方法1:Base R 原生实现

利用ave()函数结合cumsum(),无需额外安装包:

df <- data.frame(id = c("A","A","B","C","D","D","D"))
# 为每个id组生成从1开始的递增计数
df$index <- ave(rep(1, nrow(df)), df$id, FUN = cumsum)
# 查看结果
df

输出结果:

id index
1  A     1
2  A     2
3  B     1
4  C     1
5  D     1
6  D     2
7  D     3

方法2:dplyr 包实现(tidyverse 风格)

如果你习惯使用tidyverse生态,用group_by()分组后调用row_number()生成索引:

library(dplyr)
df <- data.frame(id = c("A","A","B","C","D","D","D"))
df1 <- df %>%
  group_by(id) %>%
  mutate(index = row_number()) %>%
  ungroup() # 取消分组状态,避免后续操作受影响
df1

输出结果与上述一致。

方法3:data.table 包实现(高效处理大数据)

针对大规模数据集,data.table的分组操作效率更高:

library(data.table)
dt <- data.table(id = c("A","A","B","C","D","D","D"))
# 按id分组,每组生成从1到组内行数的序列
dt[, index := seq_len(.N), by = id]
dt

输出结果同样符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:30:32