通知
清除所有

分配组id在R中从0开始,以1结束

RSS

(@abhijith)
贵族成员
加入:1年前
帖子:1350
下午14/05/2021 12:16

我有以下数据集:

DT < -数据。德拉姆(v1 = c (0, 0, 0, 1, 0, 0, 1))

在此基础上,我只想创建一个ID,其累积值为1。

ID应该是

ID < - c(1、2、3、4、1、2、3)


报价
(@ganesh)
贵族成员
加入:1年前
帖子:1362
14/05/2021 19点

你可以简单地在基数R中使用ave:

with(DT, ave(v1, c(0, cumsum(v1)[-length(v1)]), FUN = seq_along))

#[1] 1 2 3 4 1 2 3

或者如果你也想在dplyr中,你可以使用lag()来创建组,你可以在每个组中分配行号:

库(dplyr)

DT %>% group_by(gr = lag(cumsum(v1), default = 0)) %>% mutate(ID = row_number())


回复报价
分享:
Baidu