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

如何为R数据框Chr分组添加重复3次的序列?处理非3倍数组长度

按分组生成重复3次的序列列(处理非3倍数长度分组)

需求是给数据框按Chr分组,新增一列rep,每个分组内生成1,1,1,2,2,2,...的序列,直到分组末尾。当分组长度无法被3整除时,最后一段的数字会重复剩余行数的次数(比如长度为5的分组,最后一段2会重复2次;长度为1的分组则只出现1次1)。

实现代码

用dplyr的分组操作可以简洁完成:

library(dplyr)

original <- data.frame(Chr=c("chr1","chr1","chr1","chr1","chr1","chr2","chr2","chr2","chr2","chr2","chr3"),
                       value=c(1,3,1,3,5,6,3,1,3,5,0),
                       seq=c(1,2,3,4,5,1,2,3,4,5,6))

modified <- original %>%
  group_by(Chr) %>%
  mutate(rep = ceiling(row_number() / 3)) %>%
  ungroup()

# 查看结果
modified

逻辑说明

  • group_by(Chr):按Chr字段分组处理
  • row_number():每个分组内生成从1开始的行号
  • ceiling(row_number() / 3):行号除以3后取向上取整,这样每3行对应同一个递增数字:
    • 第1-3行:ceiling(1/3)到ceiling(3/3) → 1
    • 第4-6行:ceiling(4/3)到ceiling(6/3) → 2
    • 若分组剩余行数不足3(比如第5行):ceiling(5/3) → 2,自然形成重复2次的结果

运行后得到的modified数据框和你提供的示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:02:02