如何在R语言dplyr中实现分组内生成连续编号
错误原因
- 代码问题出在
group_by()的分组参数设置,你同时按cat和date两个字段分组,测试数据中每个cat + date的组合仅对应1行数据,row_number()返回的是当前分组内的行序号,每个仅1行的分组只会返回1,因此无法生成同cat分类下的连续序号。
修正方案
仅保留cat作为唯一分组字段即可,修改后代码如下:
library(dplyr) df <- tibble( cat = c("A", "B", "C", "A", "A", "B"), date = seq.Date(Sys.Date(), Sys.Date() + 5, by = 1), age = c(12, 13, 34,23,32,34) ) df <- df %>% arrange(cat, date) %>% group_by(cat) %>% # 仅按cat字段分组 mutate(var1 = row_number()) df
结果验证
运行上述代码后,cat为A的3行数据var1列会依次生成1、2、3的连续序号,符合预期。
内容的提问来源于stack exchange,提问作者Moses
相关产品推荐
相关产品推荐

