Inserisci i numeri sequenziali senza estremità specifica nella colonna di una cornice di dati in r
-
21-12-2019 - |
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
}
}
. 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