Índice
- O Curso R
-
- Tutoriais
-
- Apostila
-
- 6. Testes de Hipótese (em preparação!)
- Exercícios
-
- Material de Apoio
-
- Área dos Alunos
-
- Cursos Anteriores
-
IBUSP
Outras Insitutições
Linques
Visitantes
Outras Insitutições
Doutorando em Ecologia na Universidade Federal do Rio de Janeiro (UFRJ), fazendo parte da equipe do Laboratório de Biologia e Tecnologia Pesqueira (LBTP), sob coordenação e orientação do Dr. Marcelo Vianna. Meu projeto de pesquisa envolve o estudo da qualidade ecológica de estuários utilizando peixes demersais como modelos biológicos.
Currículo Lattes
gabrielbbarros@gmail.com
Página com meus exercícios resolvidos: exec
Como plano principal, a função a ser criada servirá para calcular o Índice de Avaliação de Peixes Estuarinos (The Estuarine Fish Assessment Index - EFAI)1). O EFAI inclui métricas sobre a estrutura e função da comunidade (estrutura trófica e padrões de uso de habitat), bem como espécies-chave para avaliar impactos específicos de atividades antrópicas. Esse é um dos índices multimétricos que utilizarei na minha tese, na qual tenho o intuito de avaliar a adequação de diferentes índices multimétricos para utilização em dados de peixes de estuários tropicais.
Para entrada da função, serão inseridos os seguintes argumentos:
(i) um objeto da classe data.frame que contenha colunas com os locais de amostragem (pontos) e as métricas do índice (riqueza de espécies, % de marinhos migrantes, % de indivíduos de espécies residentes estuarinas, número de espécies residentes estuarinas, % de indivíduos de espécies piscívoras, número de espécies piscívoras, espécies diádromas, espécies introduzidas, espécies sensíveis a distúrbio);
(ii) um argumento que indica a zona halina do corpo d'água, uma vez que ambientes estuarinos podem ser muito distintos no tamanho e nas caraterísticas abióticas.
A função calculará os seguintes aspectos:
(i) os scores dos pontos de amostragem, onde são somados os scores individuais de cada uma das métricas simples para se ter o score final
(ii) a qualidade ecológica de cada ponto de amostragem, definido a partir de classes de scores pré-definidos
Como resultado, será possível observar quais pontos de amostragem tem qualidade ecológica entre alta e ruim (alta, boa, moderada, pobre e ruim)Fonte.
Como plano secundário, proponho criar uma função com o objetivo analisar o custo/benefício de métodos de amostragemMethods Research. Essa análise é essencial para a escolha do método que apresenta melhor balanço entre precisão dos dados obtidos e custos da amostragem. Tal função será baseada no índice de custo/benefício criado na minha dissertação (Analysis of Sampling Methods of Estuarine Benthic Macrofauna), o qual se baseou na precisão, deixando de lado a acurácia. Tal índice foi aplicado para macrofauna bentônica estuarina, mas pode ser utilizado para outros grupos biológicos de diferentes ecossistemas.
Para entrada da função, serão inseridos os seguintes argumentos:
(i) um objeto da classe data.frame que contenha as unidades amostrais nas colunas e as espécies nas linhas, caso o método aborde o estudo de comunidades, ou um vetor numérico que contenha abundância de indivíduos de determinada espécie para cada unidade amostral (estudos de populações);
(ii) um argumento que indica o valor do custo por unidade amostral;
(iii) um argumento que indica o valor dos custos adicionais;
(iv) um argumento lógico para exclusão de NA.
A função calculará os seguintes aspectos:
(i) a precisão (p) das estimativas do número de indivíduos, a partir da seguinte fórmula:
p = SE / µ = (s / √n) / µ
no qual, SE é o erro padrão estimado a partir do desvio padrão (s) para determinado tamanho amostral (n), e µ é a média amostral. Precisão está inversamente relacionada aos valores da razão utilizada, sendo maior quando SE é pequeno relativo à média e menor quando o valor da razão aumenta2). Assim, o tratamento analisado com menor valor calculado fornece estimativas mais precisas.
(ii) o custo total (Ct) de cada método, através da multiplicação do custo de cada unidade amostral pelo número total de unidades, sendo somado pelos custos adicionais:
Ct = n * Cu + Ca
no qual, n é o número de pontos amostrados para cada procedimento, Cu é o custo para cada unidade amostral (i.e. tempo de amostragem, staff) e Ca são os custos adicionais, assumidos como valor gasto (aquisição dos equipamentos).
(iii) a razão custo-benefício (CB) dividindo-se o custo total pela precisão:
CB = (Ct / (1 - p)) / 1000
no qual, Ct é o custo total e p a precisão. Os valores serão divididos por 1000 para reduzir a escala do valor calculado.
Como resultado, quanto menor o custo e maior a precisão, menor será o valor calculado e, conseqüentemente, melhor a razão custo-benefício do tratamento analisado.
em 28/abr/16
As duas propostas me parecem simples e relativamente fáceis de implementar. Na proposta A, faltou um pouco de informação de como você vai calcular o índice e a sua relação com os objetos de saída. Aliás, quais serão os objetos de saída? A proposta B parece igualmente razoável, também não deu pra sacar direito qual será o objeto de saída, mas está OK. Como as duas propostas estão mais ou menos no mesmo nível, escolha a que mais te interessar e mãos à obra!
Olá, Melina! Obrigado pelos comentários. Vou ficar com a Proposta A, pois não existe códigos para esse índice (pelo menos não encontrei até o momento) e esse é apenas um dos vários índices que utilizarei e para os quais precisarei criar códigos no R durante a minha tese. Respondendo a sua dúvida sobre essa proposta, o objeto de saída será o Score desse ponto de amostragem juntamente com a sua qualidade ecológica. Não descrevi detalhadamente a parte do cálculo do índice pq é bem densa, mas está tudo descrito no item 2.3 do artigo que citei no finalFonte. Basicamente, são definidos scores para cada uma das métricas simples e, por fim, esses scores são somados para se ter o score final que define a qualidade ecológica do local. Ainda pretendo voltar para a proposta B no futuro. Obrigado, mais uma vez. Abç.
efai package:none R Documentation Cálculo do Índice de Avaliação de Peixes Estuarinos (The Estuarine Fish Assessment Index - EFAI) Description: O EFAI inclui métricas sobre a estrutura e função da comunidade (estrutura trófica e padrões de uso de habitat), bem como espécies-chave para avaliar impactos específicos de atividades antrópicas. São definidos scores para cada uma das métricas simples e, por fim, esses scores são somados para se ter o score final que define a qualidade ecológica do local. Usage: efai(x, zona = TRUE) Arguments: x Dataframe contendo 10 colunas: (i) os pontos de amostragem, (ii) riqueza de espécies, (iii) % de marinhos migrantes, (iv) % de indivíduos de espécies residentes estuarinas, (v) número de espécies residentes estuarinas, (vi) % de indivíduos de espécies piscívoras, (vii) número de espécies piscívoras, (viii) scores para espécies diádromas, (ix) scores para espécies introduzidas, (x) scores para espécies sensíveis a distúrbio. Caso os dados contemplem pontos em diferentes zonas halinas, uma última coluna deve ser inserida no dataframe contendo o valor da salinidade em cada ponto de amostragem. zona Valor lógico que indica se o data.frame contém dados de diferentes zonas halinas do corpo d'água, uma vez que ambientes estuarinos podem ser muito distintos no tamanho e nas caraterísticas abióticas. Details: É necessário estruturar o dataframe corretamente antes de aplicar a função. Exceto para riqueza de espécies, para a qual existem diferentes funções para calcula-la no R, as demais métricas simples necessitam de literatura especializada para a caraterização trófica e de uso de habitat das espécies de peixes. A função não define os scores para as variáveis: espécies diádromas, espécies introduzidas e espécies sensíveis a distúrbio. Essas variáveis foram subjetivamente caracterizadas por Cabral et al. (2012), de modo que as mesmas precisam ser definidas e inseridas no dataframe previamente. Value: A função retorna um dataframe com 3 colunas: (i) pontos de amostragem, (ii) score final de cada ponto e, (iii) qualidade ecológica (alta, boa, moderada, pobre e ruim). Warning: A função não é aplicável a matrizes usuais de abundância de espécies. Ocorrência de mensagem de erro se o primeiro objeto não for um dataframe contendo as métricas especificadas. Note: Para grandes conjuntos de dados com série temporal, recomenda-se aplicar a função para cada período amostral, de modo a permitir uma melhor visualização dos resultados. Posteriormente podem ser gerados gráficos comparativos entre pontos de amostragem por período amostral. Author(s): Gabriel Barros G. de Souza gabrielbbarros@gmail.com References: - Cabral, H.N.; Fonseca, V.F.; Gamito, R.; Gonçalves, C.I.; Costa, J.L.; Erzini, K.; Gonçalves, J.; Martins, J.; Leite, L.; Andrade, J.P.; Ramos, S.; Bordalo, A.; Amorim, E.; Neto, J.M.; Marques, J.C.; Rebelo, J.E.; Silva, C.; Castro, N.; Almeida, P.R.; Domingos, I.; Gordo, L.S.; Costa, M.J. (2012) Ecological quality assessment of transitional waters based on fish assemblages in Portuguese estuaries: The Estuarine Fish Assessment Index (EFAI). Ecological Indicators, 19:144-153 - Karr, J.R., Fausch, K.D., Angermeier, P.L., Yant, P.R., Schlosser, I.J. 1986. Assessment biological integrity in running waters: a method and its rationale. Illinois Natu- ral, History Survey Special Publication 5, Champaign, IL, USA. See Also: Pacotes que calculam algumas métricas simples para comunidades estuarinas e marinhas: 'mizer', 'BEQI2', 'fishmethods'. Examples: pontos <- c(1:10) richness <- rep(seq(50,90,by=10),each=2) mar.migr <- c(rep(c(1,5),each=3),7,2,1,1) est.esp.1 <- c(rep(c(10,25),each=3),50,75,90,10) est.esp.2 <- c(5,5,6,15,17,18,40,60,81,5) p1 <- c(rep(c(80,55),each=3),20,10,2,80) p2 <- c(40,40,38,31,36,36,16,8,2,40) diad <- rep(1,length.out=10) introd <- rep(1,length.out=10) disturb <- c(rep(seq(1,5,by=2),each=3),1) salin <- c(rep(seq(4,30,by=13),each=3),4) dados <- data.frame(pontos,richness,mar.migr,est.esp.1,est.esp.2,p1,p2,diad,introd,disturb,salin) # diferentes zonas halinas efai(dados) dados2 <- data.frame(pontos,richness,mar.migr,est.esp.1,est.esp.2,p1,p2,diad,introd,disturb) # sem zonas halinas efai(dados2,zona=FALSE)
########## Função EFAI ########## efai <- function (x, zona = TRUE) # atribui ao objeto 'efai' a classe 'function' com os argumentos x { # inicia o codigo da funcao if(is.data.frame(x) == F) # verifica se a classe do objeto ‘x' contem um data.frame { cat("\n ‘x' precisa ser um data.frame.\n") # pare a funcao se a condicao acima for atendida, retornando a mensagem de erro } sr <- rep(NA, length(x[,2])) # cria um objeto para incluir os dados de scores para Species Richness (SR) mm <- rep(NA, length(x[,3])) # cria um objeto para incluir os dados de scores para percentual de Marine Migrants (MM) es.1 <- rep(NA, length(x[,4])) # cria um objeto para incluir os dados de scores para percentual de Estuarine Species (ES) es.2 <- rep(NA, length(x[,5])) # cria um objeto para incluir os dados de scores para numero de Estuarine Species (ES) p1 <- rep(NA, length(x[,6])) # cria um objeto para incluir os dados de scores para percentual de Piscivore Species (P) p2 <- rep(NA, length(x[,6])) # cria um objeto para incluir os dados de scores para numero de Piscivore Species (P) if(zona == TRUE) # se o argumento zona for verdadeiro (default), os dados serão analisados considerando diferentes zonas halinas { for(j in 1:length(x[,11])) # criando ciclo para zonas oligohalinas if(x[j,11]<5) ## se os dados se referem a zonas oligohalinas { for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR) { if(x[i,2]<=3) # se o valor de SR é menor ou igual a 3 { sr[i] = 1 # atribuir o score 1 } if(x[i,2]>=4 & x[i,2]<=8) # se o valor de SR está entre 4 e 8 { sr[i] = 3 # atribuir o score 3 } if(x[i,2]>8) # se o valor de SR é maior que 8 { sr[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM) { if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10% { mm[i] = 1 # atribuir o score 1 } if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50% { mm[i] = 3 # atribuir o score 3 } if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50% { mm[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES) { if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90% { es.1[i] = 1 # atribuir o score 1 } if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { es.1[i] = 3 # atribuir o score 3 } if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70% { es.1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P) { if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90% { p1[i] = 1 # atribuir o score 1 } if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { p1[i] = 3 # atribuir o score 3 } if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70% { p1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P) { if(x[i,7]<=1) # se o número de P2 é menor ou igual a 1 { p2[i] = 1 # atribuir o score 1 } if(x[i,7]==2) # se o número de P2 é 2 { p2[i] = 3 # atribuir o score 3 } if(x[i,7]>2) # se o número de P2 é maior que 2 { p2[i] = 5 # atribuir o score 5 } } } es.2 <- NULL # removendo esse vetor, pois não existem scores para o número de ES para zonas oligohalinas for(j in 1:length(x[,11])) # criando ciclo para zonas mesohalinas if(x[j,11]>=5 & x[j,11]<=18) ## se os dados se referem a zonas mesohalinas { for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR) { if(x[i,2]<=4) # se o valor de SR é menor ou igual a 4 { sr[i] = 1 # atribuir o score 1 } if(x[i,2]>=5 & x[i,2]<=10) # se o valor de SR está entre 5 e 10 { sr[i] = 3 # atribuir o score 3 } if(x[i,2]>10) # se o valor de SR é maior que 10 { sr[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM) { if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10% { mm[i] = 1 # atribuir o score 1 } if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50% { mm[i] = 3 # atribuir o score 3 } if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50% { mm[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES) { if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90% { es.1[i] = 1 # atribuir o score 1 } if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { es.1[i] = 3 # atribuir o score 3 } if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70% { es.1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES) { if(x[i,5]<=1) # se o número de ES2 é menor ou igual a 1 { es.2[i] = 1 # atribuir o score 1 } if(x[i,5]>=2 & x[i,5]<3) # se o número de ES2 está entre 2 e 3 { es.2[i] = 3 # atribuir o score 3 } if(x[i,5]>3) # se o número de ES2 é maior que 3 { es.2[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P) { if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90% { p1[i] = 1 # atribuir o score 1 } if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { p1[i] = 3 # atribuir o score 3 } if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70% { p1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P) { if(x[i,7]<=1) # se o número de P2 é menor ou igual a 1 { p2[i] = 1 # atribuir o score 1 } if(x[i,7]==2 & x[i,7]==3) # se o número de P2 está entre 2 e 3 { p2[i] = 3 # atribuir o score 3 } if(x[i,7]>3) # se o número de P2 é maior que 3 { p2[i] = 5 # atribuir o score 5 } } } for(j in 1:length(x[,11])) # criando ciclo para zonas polihalinas if(x[j,11]>18) ## se os dados se referem a zonas polihalinas { for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR) { if(x[i,2]<=5) # se o valor de SR é menor ou igual a 5 { sr[i] = 1 # atribuir o score 1 } if(x[i,2]>=6 & x[i,2]<=15) # se o valor de SR está entre 6 e 15 { sr[i] = 3 # atribuir o score 3 } if(x[i,2]>15) # se o valor de SR é maior que 15 { sr[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM) { if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10% { mm[i] = 1 # atribuir o score 1 } if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50% { mm[i] = 3 # atribuir o score 3 } if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50% { mm[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES) { if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90% { es.1[i] = 1 # atribuir o score 1 } if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { es.1[i] = 3 # atribuir o score 3 } if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70% { es.1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES) { if(x[i,5]<=2) # se o número de ES2 é menor ou igual a 2 { es.2[i] = 1 # atribuir o score 1 } if(x[i,5]>=3 & x[i,5]<=5) # se o número de ES2 está entre 3 e 5 { es.2[i] = 3 # atribuir o score 3 } if(x[i,5]>5) # se o número de ES2 é maior que 5 { es.2[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P) { if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90% { p1[i] = 1 # atribuir o score 1 } if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { p1[i] = 3 # atribuir o score 3 } if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70% { p1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P) { if(x[i,7]<=2) # se o número de P2 é menor ou igual a 2 { p2[i] = 1 # atribuir o score 1 } if(x[i,7]>=3 & x[i,7]<=5) # se o número de P2 está entre 3 e 5 { p2[i] = 3 # atribuir o score 3 } if(x[i,7]>5) # se o número de P2 é maior que 5 { p2[i] = 5 # atribuir o score 5 } } } } else # se o argumento zona for falso { for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR) { if(x[i,2]<=10) # se o valor de SR é menor ou igual a 10 { sr[i] = 1 # atribuir o score 1 } if(x[i,2]>=11 & x[i,2]<=20) # se o valor de SR está entre 11 e 20 { sr[i] = 3 # atribuir o score 3 } if(x[i,2]>20) # se o valor de SR é maior que 20 { sr[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM) { if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10% { mm[i] = 1 # atribuir o score 1 } if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50% { mm[i] = 3 # atribuir o score 3 } if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50% { mm[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES) { if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90% { es.1[i] = 1 # atribuir o score 1 } if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { es.1[i] = 3 # atribuir o score 3 } if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70% { es.1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES) { if(x[i,5]<=2) # se o número de ES2 é menor ou igual a 2 { es.2[i] = 1 # atribuir o score 1 } if(x[i,5]>=3 & x[i,5]<=5) # se o número de ES2 está entre 3 e 5 { es.2[i] = 3 # atribuir o score 3 } if(x[i,5]>5) # se o número de ES2 é maior que 5 { es.2[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P) { if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90% { p1[i] = 1 # atribuir o score 1 } if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90% { p1[i] = 3 # atribuir o score 3 } if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70% { p1[i] = 5 # atribuir o score 5 } } for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P) { if(x[i,7]<=5) # se o número de P2 é menor ou igual a 5 { p2[i] = 1 # atribuir o score 1 } if(x[i,7]>=6 & x[i,7]<=12) # se o número de P2 está entre 6 e 12 { p2[i] = 3 # atribuir o score 3 } if(x[i,7]>12) # se o número de P2 é maior que 12 { p2[i] = 5 # atribuir o score 5 } } } x.scores <- data.frame(sr, mm, es.1, es.2, p1, p2, x[,8], x[,9], x[,10]) # cria um dataframe com os scores calculados e fornecidos score.final <- apply(x.scores, 1, sum) # soma os scores para cada ponto amostral quality <- rep(NA, length(score.final)) # cria um objeto para incluir a qualidade ecologica dos scores finais para cada ponto de amostragem for(k in 1:length(score.final)) # loop para compor o vetor de qualidade ecológica para os pontos de amostragem { if(score.final[k]>=7 & score.final[k]<=10) # se o score estiver entre os valores 7 e 10 { quality[k]="bad" # atribuir o termo "bad" } if(score.final[k]>=11 & score.final[k]<=14) # se o score estiver entre os valores 11 e 14 { quality[k]="poor" # atribuir o termo "poor" } if(score.final[k]>=15 & score.final[k]<=20) # se o score estiver entre os valores 15 e 20 { quality[k]="moderate" # atribuir o termo "moderate" } if(score.final[k]>=21 & score.final[k]<=29) # se o score estiver entre os valores 21 e 29 { quality[k]="good" # atribuir o termo "good" } if(score.final[k]>=30 & score.final[k]<=35) # se o score estiver entre os valores 30 e 35 { quality[k]="high" # atribuir o termo "high" } } resulta <- data.frame(x[,1], score.final, quality) # dataframe do resultado com 3 colunas: (i) pontos de amostragem, (ii) score final de cada ponto e, (iii) qualidade ecológica names(resulta) <- c("Pontos de Amostragem", "Score", "Qualidade Ecológica") # nomeia as colunas do resultado return(resulta) # retorna o dataframe do resultado } # encerra o codigo da funcao
Script da Função EFAI: efai.index.r
Script do Exemplo: exemplo.data.r