2012-10-15 7 views
7

Ich habe eine Sequenz von Ereignissen, codiert als A, B und C. Für jedes Element muss ich zählen, wie oft dieses Element zuvor wiederholt wurde. Zum Beispiel:Zählen Sie, wie oft das Element in einer Sequenz wiederholt wird (in R)

x<-c('A','A','A','B','C','C','A','B','A','C') 
y<-c(0,1,2,0,0,1,0,0,0,0) 
cbind(x,y) 

    x y 
[1,] "A" "0" 
[2,] "A" "1" 
[3,] "A" "2" 
[4,] "B" "0" 
[5,] "C" "0" 
[6,] "C" "1" 
[7,] "A" "0" 
[8,] "B" "0" 
[9,] "A" "0" 
[10,] "C" "0" 

Ich brauche Spalte y aus x zu generieren.

Antwort

13

eine Kombination von rle Verwenden und sequence:

> sequence(rle(x)$lengths)-1 
[1] 0 1 2 0 0 1 0 0 0 0 
Verwandte Themen