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

R语言基于字符串列创建分组ID的实现方法

R语言dplyr实现同Name值匹配相同分组ID方案

你原有代码框架里用row_number()的思路不对,这个函数是给分组内的每一行按顺序生成递增行号,同组的多条记录会得到不同的序号,没法满足同Name对应相同ID的要求。

最贴合你现有写法的实现

你已经完成了group_by(Name)的分组步骤,直接调用dplyr内置的cur_group_id()即可,这个函数会自动为每个分组分配从1开始的唯一整数ID,同组所有记录拿到的ID完全一致,ID分配顺序和Name值第一次出现的顺序对齐,和你给出的示例效果完全匹配:

df1 %>% 
  group_by(Name) %>% 
  mutate(ID = cur_group_id()) %>%
  ungroup() # 操作完成后建议解除分组,避免后续数据处理受分组规则干扰

运行后效果和示例完全一致:

NameID
A09john1
J43mary2
B7you3
A09john1
J43mary2
B7you3

更简洁的无分组写法

如果不想写分组步骤,也可以直接用match()匹配Name值在去重序列里的位置,得到的结果和上面写法完全一致:

df1 %>%
  mutate(ID = match(Name, unique(Name)))

注意:以上两种写法的ID分配规则都是「按Name值第一次在数据中出现的顺序从1开始编号」,如果需要按Name的字典序分配ID,只需要在分组前先把Name列转为因子并按字典序排序水平即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:15:41