do.call(rbind, lapply(split(dados, dados$parcela), function(x) cbind(x, taxa=c(0, diff(x$y)))))
Nao da p testar agora, mas é p ser algo perto disso. On Friday, 21 October 2011, Samuel Carvalho <[email protected]> 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)
_______________________________________________ R-br mailing list [email protected] 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.
