Ingrese números secuenciales sin final específico en la columna de una marco de datos en R
-
21-12-2019 - |
Pregunta
Me gustaría dar una secuencia de números a una nueva columna a un marco de datos.Pero esta secuencia se repetirá varias veces en función de un valor en otra columna.(I., comienza a partir de 1 hasta que ese valor específico se cambiará a otro valor).
Mi problema es cómo definir el punto final para cada secuencia en r.
Una parte de mi marco de datos con la columna "V2", que tengo la intención de agregar:
V1 V2(new added column with sequential numbers)
12 1
12 2
12 3
12 4
12 5
13 1
13 2
13 3
13 4
13 5
13 6
14 1
14 2
14 3
14 4
¡Intenté usar el siguiente código, que no funcionaba!
count <- table(df$V1)
c <- as.integer(names(count)[df$V1==12])
repeat{
df$V2<- seq(1,c, by=1)
if(df$V1!=12){
break
}
}
Solución
Suena como si pudieras estar buscando rle
, ya que está interesado en cualquier momento en la variable "V1" cambia .
Intente lo siguiente:
> sequence(rle(df$V1)$lengths)
[1] 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4
Otros consejos
RLE es una solución muy buena, pero también podría haber usado AVE:
tab$V2 <- ave(tab$V1, tab$V1, FUN=seq_along)
hth
Bien Ananda golpea mi esfuerzo:
vec = numeric(0)
for(i in unique(df$V1)){
n = length(df$V1[df$V1 == i])
vec = c(vec, 1:n)
}