====== Gabriel Barros G. de Souza ====== \\ {{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:co_pia_de_barros_15.jpg?100 |}} \\ 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. \\ \\ [[http://lattes.cnpq.br/4012374701934609|Currículo Lattes]] \\ [[gabrielbbarros@gmail.com]] \\ \\ ---- ===== Meus Exercícios ===== Página com meus exercícios resolvidos: [[.:exec]] \\ \\ ---- ===== Proposta de Trabalho Final ===== \\ ==== Plano A ==== 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)((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)). 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. === Argumentos da Função === 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. === Funcionamento e Saída da Função === 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)[[http://www.sciencedirect.com/science/article/pii/S1470160X11002494|Fonte]]. \\ ==== Plano B ==== Como plano secundário, proponho criar uma função com o objetivo analisar o custo/benefício de métodos de amostragem[[https://www.cals.ncsu.edu/course/zo501/Readings/How%20You%20Count%20JAE.pdf|Methods 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 ([[http://link.springer.com/article/10.1007%2Fs10750-014-2033-z|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. === Argumentos da Função === 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__. === Funcionamento e Saída da Função === 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 aumenta((Andrew, N.L. & Mapstone, B.D. (1987) Sampling and the description of spatial pattern in marine ecology. Oceanography and Marine Biology - An Annual Review, 25:39-90)). 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. \\ ====Comentários das Propostas Melina==== 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! ====Respostas Gabriel==== 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 final[[http://www.sciencedirect.com/science/article/pii/S1470160X11002494|Fonte]]. 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ç. ---- ===== Página de Ajuda ===== 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) ===== Código da Função ===== ########## 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 ===== Arquivo da Função ===== Script da Função EFAI: {{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:efai.index.r|}} Script do Exemplo: {{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:exemplo.data.r|}} \\