Foro de debate

Suma de valores

Suma de valores

by Fernando Seijas -
Number of replies: 3

Hola, tengo una duda:

Si tengo un vector, como x <- c(0,0,0,0,1,2,0,1,5,1,2,2,0,0,0,4,0...)

Como puedo sumar los valores comprendidos entre ceros por separado para vectores muy grandes?

Por ejemplo,

si x <- c(0,0,0,0,1,2,0,1,5,1,2,2,0,0,7,4,0....) 

que el vector resultante sea

suma <-  c(1+2, 1+5+1+2+2,7+ 4...)

gracias!

In reply to Fernando Seijas

Re: Suma de valores

by Manuel Muñoz Márquez -

Buenas:

Si lo que te interesa son las cantidades, entonces creo que te vale lo siguiente:

> x <- c(0,0,0,0,1,2,0,1,5,1,2,2,0,0,7,4,0)
> cs <- cumsum(x)
> diff(unique(cs[duplicated(cs)]))
[1]  3 11 11

Un saludo.

In reply to Fernando Seijas

Re: Suma de valores

by Antonio Jesús Arriaza Gómez -

Seguramente no sea lo más eficiente... pero creo que esto te puede ayudar:

#########################################################

x = c(0,1,2,3,0,0,2,6,0,0,6,0,0,3,0,0,2,3,4,0,1)

n = length(x)

indices = which(x==0)

l = length(indices)

temp = rep(0,l)

for(i in seq(1,l-1)){

temp[i] = sum(x[indices[i]:indices[i+1]])

}

if(indices[l]<n){

  temp[l]=sum(x[indices[l]:n])

}

if(indices[1]>1){

  temp=c(sum(x[1:indices[1]]),temp)

}

solucion = temp[temp!=0]

print(solucion)

#########################################################