data.table中如何将变量按n个连续整数灵活分组?
实现方案
直接使用ceiling()函数处理即可,逻辑简单高效,天然适配你提到的所有场景,仅需要修改n的值即可灵活调整每组的连续整数个数。
场景1:分组区间从整数1开始计算(和你给出的示例完全匹配)
library(data.table) # 示例数据 DT <- data.table(var = 1:100) # 设定每组包含的连续整数个数 n <- 2 # 新增group列 DT[, group := ceiling(var / n)]
效果验证:
- n=1时,
ceiling(var / 1)返回值和var完全一致,符合要求 - n=2时,1、2返回分组1,3、4返回分组2,以此类推,匹配你的示例输出
- n=3时,1、2、3返回分组1,4、5、6返回分组2,符合要求
var存在重复值时,相同var的计算结果完全一致,也匹配你给出的重复值场景示例
场景2:分组从var列的最小值开始计算(比如var最小值为5,n=2时5、6为第一组)
调整计算逻辑即可:
DT[, group := ceiling((var - min(var) + 1) / n)]
重复值场景测试
DT <- data.table(var = c(1,1,2,3,3,4)) n <- 2 DT[, group := ceiling(var / n)] print(DT) # 输出: # var group # 1: 1 1 # 2: 1 1 # 3: 2 1 # 4: 3 2 # 5: 3 2 # 6: 4 2
内容的提问来源于stack exchange,提问作者plausibly_exogenous
相关产品推荐
相关产品推荐

