suma primeros pares para numeros los impares ecuaciones consecutivos r split count categories

primeros - suma de numeros consecutivos



Cuenta el nĂºmero de pares consecutivos en un vector (4)

Con data.table :

library(data.table) dt <- rev(data.table(embed(V,2))) dt[,.N, by=names(dt)] # V2 V1 N # 1: -1 -1 7 # 2: -1 1 1 # 3: 1 1 1

Supongamos que tengo el siguiente vector:

V<-c(-1,-1,-1,-1,-1,-1,-1,-1,1,1)

y quiero contar el número de pares CONSECUTIVOS en las siguientes categorías:

(1,1), (-1,1), (1,-1), and (-1,-1).

En mi ejemplo, hay siete pares consecutivos de (-1,-1) , un par de (-1,1) y 1 par de (1,1) .

Estoy tratando de resolver este problema utilizando la función de división, pero no he podido averiguar los factores correctos.

La idea es emparejar la primera observación con la 2da. El 2º con el 3º y así sucesivamente. El último par debería ser la (n-1) ª observación con la enésima observación.


En la base R, agrega la mitad derecha del par a la diferencia para crear una puntuación:

V<-c(-1,-1,-1,-1,-1,-1,-1,-1,1,1) table(diff(V) + V[-1]) #-1 1 3 # 7 1 1

Así es como se puntúa cada par:

(-1,-1) => (-1) - (-1) + (-1) = -1 (-1, 1) => ( 1) - (-1) + (1) = 3 ( 1,-1) => (-1) - (1) + (-1) = -3 ( 1, 1) => ( 1) - (1) + (1) = 1


Tal vez algo así

library(zoo) table(rollapply(V, 2, toString)) # -1, -1 -1, 1 1, 1 # 7 1 1

O con base R

table(paste(head(V, -1), tail(V, -1))) # -1 -1 -1 1 1 1 # 7 1 1

O según el comentario de @akruns, sin paste

table(head(V, -1), tail(V, -1)) # -1 1 # -1 7 1 # 1 0 1

O

as.data.frame(table(head(V, -1), tail(V, -1))) # Var1 Var2 Freq # 1 -1 -1 7 # 2 1 -1 0 # 3 -1 1 1 # 4 1 1 1


Todos los pares consecutivos pueden ser representados por dos vectores paralelos, omitiendo la última o la primera observación

x <- V[-length(V)] y <- V[-1]

y luego la tabulación cruzada de estos

> xtabs(~ x + y) y x -1 1 -1 7 1 1 0 1

o en forma ligeramente diferente

> as.data.frame(xtabs(~x+y)) x y Freq 1 -1 -1 7 2 1 -1 0 3 -1 1 1 4 1 1 1