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
      }
    }

¿Fue útil?

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)
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top