2011-02-14 22 views
6

Soy nuevo en R pero necesito usarlo para averiguar cuántas veces ocurre un valor después de otro. Básicamente, tengo 5 números (0,1,2,3,4) enumerados en orden aleatorio 38 veces. Necesito averiguar cuántas veces ocurre el valor 0 después de que 0, 1 ocurre después de 0, 2 después de 0 ... etc., hasta que llego a 4 después de 4. ¿Hay algún comando para hacer esto?Cómo contar cuántas veces ocurre un valor después de otra

¡Realmente agradezco la ayuda!

Respuesta

10

probable que este comando hace eso:

library(plyr) # if absent, type > install.packages('plyr') 
z <- sample(0:4, 38, T) # data 
count(data.frame(embed(rev(z),2))) # do it 
+0

eso es genial, gracias a un montón amigo! –

+3

también podría hacer 'tabla (data.frame (...))' para obtener resultados en forma de matriz. Tenga en cuenta que 'plyr :: count' no incluirá pares que tienen cero recuentos. –

+0

Tampoco incluye recuentos para el número infinito de otras combinaciones que no se producen en los datos;) – hadley

11

Crear una trama de datos de pares y luego utilice table:

z <- c(0, 1, 2, 3, 4, 0, 1, 2, 3, 4) 
pairs <- data.frame(first = head(z, -1), second = tail(z, -1)) 
table(pairs) 

entrega:

 second 
first 0 1 2 3 4 
    0 0 2 0 0 0 
    1 0 0 2 0 0 
    2 0 0 0 2 0 
    3 0 0 0 0 2 
    4 1 0 0 0 0 

o lo que da el original pairs marco de datos junto con una columna de recuentos Freq:

as.data.frame(table(pairs)) 
Cuestiones relacionadas