Assumindo q seus dados estarão sempre ordenados por parcela, faça primeiro um split() por parcela e, dentro do subgrupo use diff().<br><br>Essa hipotese é valida?<br><br>On Friday, 21 October 2011, Samuel Carvalho <<a href="mailto:samukajm@yahoo.com.br">samukajm@yahoo.com.br</a>> wrote:<br>
> Caros membros do grupo,<br>> Alguém poderia por gentileza me auxiliar com o código a seguir?<br>> No caso a idéia é substituir o loop que calcula a diferença entre as observações dentro de uma mesma parcela sendo que a primeira observação de cada parcela deve ter valor zerado. Para aqueles mais familiarizados estou calculando a taxa de incremento para sucessivas medições. Segue o código<br>
> ###RCMR<br>> dados<-data.frame(parcela=rep(1:5,each=3), y=runif(15))<br>> dados<br>> dados$taxa<-0<br>> for(i in 1:(nrow(dados)-1))<br>> {<br>>   if(dados$parcela[i] == dados$parcela[i+1])<br>
>   {<br>>     dados$taxa[i+1] <- dados$y[i+1]-dados$y[i]<br>>   }<br>> }<br>> dados<br>> #A seguir tento reproduzir o código acima, porém feito incorretamente<br>> dados$taxa<-0<br>> dados$taxa[which(diff(dados$parcela)==0)] <- diff(dados$y) #feito de maneira incorreta<br>
> dados<br>>  <br>> Abraços<br>> Samuel<br>>  <br>> ====================================<br>> Samuel P. C. Carvalho<br>> Mestre em Ciências Florestais [UFLA]<br>> Doutorando em Recursos Florestais [ESALQ/USP]<br>
> =============================================<br><br>-- <br>Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)<br>