У меня есть df как это:
id <- c(rep(380,6),rep(381,4),rep(382,4),rep(383,5))
T_F <- c(FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE)
df <- data.frame(id,T_F)
Мой желаемый выход увеличивается на 1 при изменении T_F, но также перезапускает нумерацию при изменении id:
df$result <- c(1,1,2,3,4,5,1,2,3,3,1,1,2,3,1,2,3,3,3)
Я могу получитьМой результат увеличивается на 1 при изменении T_F с использованием следующего кода:
df$result <- cumsum(c(1,diff(df$T_F) != 0))
Однако это не перезапускает нумерацию при изменении идентификатора.Я пробовал следующие варианты, но безуспешно:
ave(df$id,cumsum(c(1,diff(df$id) != 0))|cumsum(c(1,diff(df$T_F) != 0)),FUN=seq_along)