O R é um programa livre multiplataforma para análises estatísticas que pode ser baixado em seu site ou adicionado na lista de repositórios de máquinas linux. Suas possibilidades de aplicação em diversas áreas são praticamente ilimitadas.
Neste blog postarei o resultado de minha experiência em sua utilização nas áreas de dinâmica de populações de peixes, ciência pesqueira e ecologia.
As postagens deste blog se destina, além de mim mesmo, a iniciantes no R e alunos da minha área de atuação.
Aprendi muito em livros e nas listas de discussão R-help e a R_STAT, mas ainda tenho muito pela frente. Agradeço desde já qualquer contribuição.

sexta-feira, 22 de outubro de 2010

Looping para consolidar dados

Obtive dados de batimetria em


Depois de trabalhar um pouco os dados em banco de dados fiquei com uma tabela (dat.bat) que indicava o código do bloco estatístico de 10' de lado e as profundidades registradas (100 por bloco).

Meu objetivo foi consolidar as informações desta tabela que tinha cerca de 24 mil linhas em uma que contivesse por bloco os valores mínimo, médio, máximo e os quartis de 2,5%, 25%, 50%, 75% e 97,5%. Também tive a curiosidade em ver quanto tempo era gasto para processar as informações de cada bloco.

Para rodar a rotina abaixo criei um vetor com os níveis dos blocos e um data.frame para colocar os resultados dos cálculos

blocos<-levels(dat.bat$BL)
Q<-rep(0,length(blocos))
dat.stat<-data.frame(blocos,Q,Q,Q,Q,Q,Q,Q,Q)
names(dat.stat)<-c("BL","Min","Q002","Q025","Q050","Q075","Q098","Max","Med")

Depois fiz um looping para o cálculo. Inicialmente o resultado do message (ou print) só aparecia se a rotina fosse parada ou terminada. Como eu estava no Windows tive que desmarcar a saída com buffer em Misc (Ctrl W) ou colocar após o message o comando flush.console()

for (i in 1:nrow(dat.bat)) {
dat.stat[i,c(2:8)]<-quantile(dat.bat[BL==blocos[i],2],
prob=c(0,0.025,0.25,0.5,0.75,0.975,1))
dat.stat[i,9]<-mean(dat.bat[BL==blocos[i],2])
message("linha ",i," processada às ",format(Sys.time(), "%H:%M:%S"))
}

Nenhum comentário:

Postar um comentário