values true r count

true - r group by count



¿Cómo puedo contar carreras en una secuencia? (2)

Esto se puede hacer de una manera eficiente mediante el uso de índices de dónde cambian los valores:

x <- c(1,0,0,0,1,2,1,0,0,1,1)

Encuentra dónde cambian los valores:

diffs <- x[-1L] != x[-length(x)]

Obtenga los índices y luego obtenga la diferencia en los índices siguientes:

idx <- c(which(diffs), length(x)) diff(c(0, idx))

En R, ¿cuál sería la forma más eficiente / más simple de contar carreras de elementos idénticos en una secuencia?

Por ejemplo, cómo contar los números de ceros consecutivos en una secuencia de enteros no negativos:

x <- c(1,0,0,0,1,0,0,0,0,0,2,0,0) # should give 3,5,2


Use rle() :

y <- rle(c(1,0,0,0,1,0,0,0,0,0,2,0,0)) y$lengths[y$values==0]