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

如何基于每10行递增为R数据框添加编号列?

实现每10行递增编号的正确方法

嘿,我来帮你搞定这个问题!先说说你之前代码的问题:n()是返回整个数据框的总行数,对你的例子来说就是100,所以n()/10==10其实是个单一的TRUE值,cumsum(TRUE)会把这个值重复到所有行,结果自然全是1,这显然不是你要的效果。

下面给你两种靠谱的实现方式,都能满足“每10行编号从0开始递增1”的需求:

方法一:用dplyr的简洁写法

我们可以利用行号的整数除法来分组生成编号,代码很直观:

library(dplyr)

test_table <- data.frame(row=c(rev(0:99)))

test_table <- test_table %>%
  mutate(No = (row_number() - 1) %/% 10)

# 验证前11行的结果
head(test_table, 11)

运行后你会看到前10行的No都是0,第11行变成1,完美符合你的要求。这里row_number()返回每行的位置(1到100),减1后变成0到99,用%/%做整数除法,每10行就会得到同一个编号,每过10行自动加1。

方法二:Base R原生实现(不用dplyr也可以)

如果不想加载dplyr,用base R的代码也能轻松搞定:

test_table <- data.frame(row=c(rev(0:99)))

# 两种写法效果完全一致,选你喜欢的就行
test_table$No <- (seq(nrow(test_table)) - 1) %/% 10
# 或者用floor函数:test_table$No <- floor((seq(nrow(test_table)) - 1)/10)

# 查看结果
head(test_table, 11)

seq(nrow(test_table))生成1到100的行号序列,后续的逻辑和dplyr版本完全一样,都是通过整数除法把每10行归为同一个编号。

核心逻辑总结

不管用哪种方法,核心都是对行号做整数除法:

  • 第1-10行:行号减1后是0-9,除以10取整得到0
  • 第11-20行:行号减1后是10-19,除以10取整得到1
  • 以此类推,自动实现每10行编号递增1,从0开始。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:22:08