do.call(rbind, lapply(split(dados, dados$parcela), function(x) cbind(x, taxa=c(0, diff(x$y)))))<br><br>Nao da p testar agora, mas é p ser algo perto disso.<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>