generar secuencia dentro del grupo en R

Estoy tratando de obtener una secuencia dentro de la categoría.

Mis datos son:

AB 1 1 1 2 1 2 1 3 1 3 1 3 1 4 1 4 

y quiero obtener la variable “c”, como mis datos se ven así:

 ABC 1 1 1 1 2 1 1 2 2 1 3 1 1 3 2 1 3 3 1 4 1 1 4 2 

Usa ave con seq_along :

 > mydf$C <- with(mydf, ave(A, A, B, FUN = seq_along)) > mydf ABC 1 1 1 1 2 1 2 1 3 1 2 2 4 1 3 1 5 1 3 2 6 1 3 3 7 1 4 1 8 1 4 2 

Si sus datos ya están ordenados (como lo son en este caso), también puede usar la sequence con rle ( mydf$C <- sequence(rle(do.call(paste, mydf))$lengths) ), pero no lo hace t tiene esa limitación con ave .

Si eres un fan de data.table , puedes utilizar .N siguiente manera:

 library(data.table) DT <- data.table(mydf) DT[, C := sequence(.N), by = c("A", "B")] DT # ABC # 1: 1 1 1 # 2: 1 2 1 # 3: 1 2 2 # 4: 1 3 1 # 5: 1 3 2 # 6: 1 3 3 # 7: 1 4 1 # 8: 1 4 2