Domanda

Vorrei dare una sequenza di numeri a una nuova colonna a una cornice di dati.Ma questa sequenza ripeterà più volte in base a un valore in un'altra colonna.(I.e inizia da 1 fino a quando il valore specifico verrà modificato in altro valore).

Il mio problema è come definire il punto finale per ogni sequenza in r.

Una parte del mio telaio dei dati con la colonna "V2" che intendo aggiungere:

  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
.

Ho provato a utilizzare il seguente codice, che non funzionava!

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

È stato utile?

Soluzione

Sembra che tu possa cercare rle poiché sei interessato a qualsiasi momento la variabile "V1" modifiche .

Prova quanto segue:

> sequence(rle(df$V1)$lengths)
 [1] 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4
.

Altri suggerimenti

RLE è una soluzione molto buona ma potresti anche aver usato AVE:

tab$V2 <- ave(tab$V1, tab$V1, FUN=seq_along)
.

HTH

Bene Ananda batte il mio sforzo:

vec = numeric(0)
for(i in unique(df$V1)){
  n = length(df$V1[df$V1 == i])
  vec = c(vec, 1:n)
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top