R data.table如何基于x列0值为起点创建序列分组变量
解决方法
你需要的分组逻辑可以通过cumsum()累计判断x是否为0的逻辑值实现,一行代码即可完成:
data[, grouping_variable := cumsum(x == 0)]
实现逻辑
x == 0会生成逻辑向量,x为0时返回TRUE(等价数值1),其余值返回FALSE(等价数值0)cumsum()对上述逻辑向量做累计求和,每遇到一个1累计值就加1,刚好生成你需要的1、2、3三个连续分组,完全对应三个原始子表的行范围。
原代码问题说明
你之前尝试的按x列分组生成序列的逻辑,只会对相同x值的行按出现顺序编号,无法生成跨x值的连续分组标识,和需求不匹配。
内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

