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]