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

如何使用dplyr为数据框列的每个唯一值按顺序生成编号标签

需求说明

给数据框指定列的每个唯一值,按照首次出现的顺序生成连续的编号标签,示例如下:
输入数据框:

df
  x
1 A
2 A
3 B
4 C
5 C
6 D

期望输出:

df
  x event
1 A     1
2 A     1
3 B     2
4 C     3
5 C     3
6 D     4

已有的循环实现逻辑:

events <- unique(df$x)
for(i in 1:length(events)){
  df$event[df$x == events[i]] <- i
}
dplyr实现方案

你可以直接用dplyr的cur_group_id()函数实现,和你原有循环的逻辑完全一致,编号顺序严格匹配唯一值首次出现的顺序:

library(dplyr)

df <- df %>%
  group_by(x) %>%
  mutate(event = cur_group_id()) %>%
  ungroup()

如果你的场景允许编号按照列值的字典序排序,也可以用更简洁的dense_rank()写法:

df <- df %>%
  mutate(event = dense_rank(x))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:00