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

如何用R语言基于列值分组生成序号新列?附示例

在R语言中按分组创建序号列的方法

首先构造你的示例数据(方便验证效果):

library(tibble)
example_twins <- tibble(
  family = c("Kelly", "Kelly", "Quin", "Quin"),
  name = c("Mark", "Scott", "Tegan", "Sara")
)

方法1:使用dplyr(tidyverse生态)

这是处理tibble最常用的方式,通过分组后生成组内行号:

library(dplyr)

example_twins <- example_twins %>%
  group_by(family) %>%
  mutate(n = row_number()) %>%
  ungroup()
  • group_by(family):按family列分组
  • mutate(n = row_number()):在每个分组内生成从1开始的连续序号
  • ungroup():取消分组状态(如果后续不需要保留分组,建议加上)

运行后得到的结果:

# A tibble: 4 × 3
  family name      n
  <chr>  <chr> <int>
1 Kelly  Mark      1
2 Kelly  Scott     2
3 Quin   Tegan     1
4 Quin   Sara      2

如果需要先对组内的name排序再生成序号,只需添加arrange步骤:

example_twins <- example_twins %>%
  group_by(family) %>%
  arrange(name, .by_group = TRUE) %>%
  mutate(n = row_number()) %>%
  ungroup()

方法2:使用Base R(无需额外包)

如果不想加载dplyr,可以用ave函数实现:

example_twins$n <- ave(rep(1, nrow(example_twins)), example_twins$family, FUN = seq_along)
  • ave函数按family分组,对每个分组应用seq_along生成对应长度的序号序列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:31:06