使用dplyr与lag()在mutate()中实现分组Tstart连续计数
解决方案
直接使用row_number()函数即可生成连续递增的Tstart字段,无需依赖lag(),该函数会按数据行的顺序自动生成从1开始的连续整数,完美适配你重复行后的数据集。
全局连续计数(整个数据集从1开始递增)
library(dplyr) test2 <- test2 %>% mutate(Tstart = row_number())
分组内连续计数(每个nrow分组从1开始单独计数)
如果需要每个分组内部独立计数,结合group_by()使用:
test2 <- test2 %>% group_by(nrow) %>% mutate(Tstart = row_number()) %>% ungroup()
原lag()方法失效的原因
你之前的方法出错,大概率是因为重复行复制了原组最后一行的Tstart值,而lag()依赖前一行的已有值计算,若初始逻辑未考虑重复行的新增位置,就会出现计数断层或重复。row_number()则直接基于行的位置生成计数,完全规避了这类问题。
内容的提问来源于stack exchange,提问作者PStaus
相关产品推荐
相关产品推荐

