如何在R语言中重复数字序列直至达到指定行数
实现每44行重复序列编号的方法
嘿,我来帮你搞定这个每44行重复序列编号的需求!先结合你之前的例子来拆解实现方法:
首先回顾你之前用dplyr实现每11行一组编号的基础代码:
library(dplyr) # 你的原始数据框 test_table <- data.frame(col=rep(0:10,each=11), row=c(rev(0:10))) # 原逻辑:每11行分配同一个递增编号(0、1、2...) test_table <- test_table %>% mutate(No=(row_number() - 1) %/% 11)
现在要扩展成每44行重复一次目标序列,核心思路是先把数据按44行划分为独立周期,再在每个周期内重复你需要的子序列,这里分两种常见场景:
场景1:每个44行周期内重复「0-3」分组(每11行一组)
如果你希望每个44行周期里,前11行No=0、接下来11行No=1、再11行No=2、最后11行No=3,下一个44行又重复这个0-3的序列,用这段代码:
test_table <- test_table %>% mutate( # 计算当前行在44行周期内的位置(从0开始计数) cycle_pos = (row_number() - 1) %% 44, # 周期内每11行一组分配编号,实现44行重复0-3 No = cycle_pos %/% 11 )
场景2:每个44行周期内重复「0-10」序列(每个编号重复4次)
如果你的需求是每个编号(0到10)在44行周期内重复4次(4×11=44),也就是0连续出现4次、1连续出现4次……10连续出现4次,再进入下一个周期重复,代码可以这么写:
test_table <- test_table %>% mutate( cycle_pos = (row_number() - 1) %% 44, # 每个编号重复4次,用周期内位置除以4取整生成序列 No = cycle_pos %/% 4 )
通用调整思路
本质上就是用row_number()获取全局行号,通过%% 44锁定当前行在周期内的位置,再用%/% 每组行数生成重复序列。你可以根据自己的子序列长度灵活调整%/%后面的数字,只要保证「每组行数 × 子序列长度 = 44」即可~
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

