首页 > 解决方案 > 在 R 中分配组 id 从 0 开始并以 1 结束

问题描述

我有一个数据集如下

DT <- data.drame(v1 = c(0,0,0,1,0,0,1))

我想创建一个累积停止在值 1 的 ID。

身份证应该是

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

标签: rdplyr

解决方案


If you are using dplyr, this will do the trick.

DT = data.frame(v1 = c(0,0,0,1,0,0,1))

DT %>% 
  dplyr::mutate(rno = row_number()) %>% 
  dplyr::mutate(group = ifelse(v1 == 0, NA, rno)) %>% 
  tidyr::fill(group, .direction = "up") %>% 
  dplyr::group_by(group) %>% 
  dplyr::mutate(ID = row_number()) %>% 
  dplyr::ungroup() %>% 
  dplyr::select(v1, ID)

推荐阅读