R语言dplyr如何新增列实现每16行分组标记递增type值
问题原因
%/%是R语言的整数除法运算符,直接用book1$ID %/% 16计算会出现分组错位:当ID为16时运算结果为1,ID为17时运算结果同样为1,无法实现每16个连续行归为同一组的需求。
解决方案
写法1(推荐,不依赖ID连续性)
直接按数据框的行位置分组,哪怕ID乱序、断号也能准确按每16行切分:
book1$Type <- ((seq_len(nrow(book1)) - 1) %/% 16) + 1
写法2(仅适用于ID从1开始连续递增的场景)
如果你的ID列始终是从1开始的连续整数,也可以直接基于ID列计算:
book1$Type <- ((book1$ID - 1) %/% 16) + 1
效果说明
运行上述代码后得到的结果和你给出的预期输出完全一致:
- 第1到16行
Type值为1 - 第17到32行
Type值为2 - 第33到34行
Type值为3
如果后续需要调整每组的行数,直接替换代码里的16为目标分组大小即可。
内容的提问来源于stack exchange,提问作者Solicia
相关产品推荐
相关产品推荐

