Assumindo q seus dados estarão sempre ordenados por parcela, faça primeiro um split() por parcela e, dentro do subgrupo use diff().
Essa hipotese é valida?
On Friday, 21 October 2011, Samuel Carvalho <samukajm@yahoo.com.br> wrote:
> Caros membros do grupo,
> Alguém poderia por gentileza me auxiliar com o código a seguir?
> 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
> ###RCMR
> dados<-data.frame(parcela=rep(1:5,each=3), y=runif(15))
> dados
> dados$taxa<-0
> for(i in 1:(nrow(dados)-1))
> {
> if(dados$parcela[i] == dados$parcela[i+1])
> {
> dados$taxa[i+1] <- dados$y[i+1]-dados$y[i]
> }
> }
> dados
> #A seguir tento reproduzir o código acima, porém feito incorretamente
> dados$taxa<-0
> dados$taxa[which(diff(dados$parcela)==0)] <- diff(dados$y) #feito de maneira incorreta
> dados
>
> Abraços
> Samuel
>
> ====================================
> Samuel P. C. Carvalho
> Mestre em Ciências Florestais [UFLA]
> Doutorando em Recursos Florestais [ESALQ/USP]
> =============================================
--
Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)