Soma com intervalo definido dentro de um loop

Bom dia colegas de R! Preciso somar uma serie de dados com tamanho definido igual a "a" repetições. Tentei usar o comando for() para realizar essa tarefa e somar os valores de x1 até xa; x2 até x(a+1) e assim sucessivamente até xn. Usando a estrutura básica da função soma fora do comando for não tive problemas: sum(Nasa$PP.Liquida[1:140]) Quando tentei aplicar esse formato no comando for não consegui ter sucesso: PP = for(i in Nasa$PP.Liquida){ sum(Nasa$PP.Liquida[i:(i+139)]) } Acredito que possa ser um problema de entendimento conceitual do funcionamento desse comando. Alguém poderia me ajudar nessa questão? Desde já, agradeço a todos pelo apoio! Att Yury Duarte Engenheiro Agrônomo - ESALQ/USP

Não estou com o R aqui agora, mas vou levantar duas questões que talvez lhe ajudem: * Os dados contêm valores faltantes? * Será que a função cumsum() não lhe atende? Leonardo Ferreira Fontenelle[1] Em Seg 7 mar. 2016, às 08:41, Yury Duarte escreveu:
Bom dia colegas de R!
Preciso somar uma serie de dados com tamanho definido igual a "a" repetições. Tentei usar o comando for() para realizar essa tarefa e somar os valores de x1 até xa; x2 até x(a+1) e assim sucessivamente até xn.
Usando a estrutura básica da função soma fora do comando for não tive problemas: sum(Nasa$PP.Liquida[1:140])
Quando tentei aplicar esse formato no comando for não consegui ter sucesso: PP = for(i in Nasa$PP.Liquida){ sum(Nasa$PP.Liquida[i:(i+139)]) }
Acredito que possa ser um problema de entendimento conceitual do funcionamento desse comando. Alguém poderia me ajudar nessa questão?
Desde já, agradeço a todos pelo apoio!
Att
Yury Duarte Engenheiro Agrônomo - ESALQ/USP _________________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Links: 1. http://lattes.cnpq.br/9234772336296638

Yuri Duarte, Apesar de outras soluções possíveis, acredito que a mais simples seja através da função “rollsum” do pacote “zoo”, como neste exemplo: require(zoo) ## # Vetor qualquer VA <- rnorm(n = 200,mean = 100,sd = 1) # Soma móvel de quarenta valores MovingSum <- rollsum(VA,40) ## Caso seja de sua preferência realizar a soma com o loop mesmo: ## # Soma loop # quantidade de valores a serem somados janela <- 40 # Criação do vetor de resultados Msum <- c() for(i in 1:(length(VA)-janela+1)){ # vetor com os valores de interesse A <- VA[i:(i+39)] Msum[i] <- sum(A) } ## Espero que ter entendido a sua dúvida e ajudado! Att, ------- Jaildo Rocha Mestrando pelo Programa Pós Graduação em Saneamento Meio Ambiente e Recursos Hídricos – UFMG
Em 07/03/2016, à(s) 08:41, Yury Duarte <yurynepomuceno@gmail.com> escreveu:
Bom dia colegas de R!
Preciso somar uma serie de dados com tamanho definido igual a "a" repetições. Tentei usar o comando for() para realizar essa tarefa e somar os valores de x1 até xa; x2 até x(a+1) e assim sucessivamente até xn.
Usando a estrutura básica da função soma fora do comando for não tive problemas: sum(Nasa$PP.Liquida[1:140])
Quando tentei aplicar esse formato no comando for não consegui ter sucesso: PP = for(i in Nasa$PP.Liquida){ sum(Nasa$PP.Liquida[i:(i+139)]) }
Acredito que possa ser um problema de entendimento conceitual do funcionamento desse comando. Alguém poderia me ajudar nessa questão?
Desde já, agradeço a todos pelo apoio!
Att
Yury Duarte Engenheiro Agrônomo - ESALQ/USP _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Boa tarde colegas! Gostaria de agradece-los pela ajuda! Jaildo, adotei a saída sugerida utilizando o pacote "zoo" apesar de ambas terem funcionado da mesma forma. Leonardo, não tinham dados faltando no arquivo, com um total de 3205 linhas. Tentei o comando sugerido (cumsum()), mas não consegui sucesso na aplicação dele. Mais uma vez, agradeço a todos pelas colaborações! Att Yury Duarte Engenheiro Agrônomo - ESALQ/USP Em 7 de março de 2016 10:56, Jaildo Rocha <j.vieirarocha@gmail.com> escreveu:
Yuri Duarte,
Apesar de outras soluções possíveis, acredito que a mais simples seja através da função “rollsum” do pacote “zoo”, como neste exemplo:
require(zoo)
## # Vetor qualquer VA <- rnorm(n = 200,mean = 100,sd = 1) # Soma móvel de quarenta valores MovingSum <- rollsum(VA,40) ##
Caso seja de sua preferência realizar a soma com o loop mesmo:
## # Soma loop # quantidade de valores a serem somados janela <- 40
# Criação do vetor de resultados Msum <- c()
for(i in 1:(length(VA)-janela+1)){ # vetor com os valores de interesse A <- VA[i:(i+39)] Msum[i] <- sum(A) } ##
Espero que ter entendido a sua dúvida e ajudado!
Att,
------- Jaildo Rocha Mestrando pelo Programa Pós Graduação em Saneamento Meio Ambiente e Recursos Hídricos – UFMG
Em 07/03/2016, à(s) 08:41, Yury Duarte <yurynepomuceno@gmail.com> escreveu:
Bom dia colegas de R!
Preciso somar uma serie de dados com tamanho definido igual a "a" repetições. Tentei usar o comando for() para realizar essa tarefa e somar os valores de x1 até xa; x2 até x(a+1) e assim sucessivamente até xn.
Usando a estrutura básica da função soma fora do comando for não tive problemas: sum(Nasa$PP.Liquida[1:140])
Quando tentei aplicar esse formato no comando for não consegui ter sucesso: PP = for(i in Nasa$PP.Liquida){ sum(Nasa$PP.Liquida[i:(i+139)]) }
Acredito que possa ser um problema de entendimento conceitual do funcionamento desse comando. Alguém poderia me ajudar nessa questão?
Desde já, agradeço a todos pelo apoio!
Att
Yury Duarte Engenheiro Agrônomo - ESALQ/USP _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (3)
-
Jaildo Rocha
-
Leonardo Ferreira Fontenelle
-
Yury Duarte