Como classificar dados no R

Aprenda como utilizar loops e classificar dados utilizando o software R.

Imagine você, engenheiro(a), no seu escritório quando um cliente aparece e te mostra um laudo, fazendo as seguintes perguntas: “A qualidade da água atende ou não a legislação?” ou “Os valores do efluente tratado podem ou não ser descartados no rio mais próximo?”.

Você lê o laudo e interpreta todos os parâmetros e em sua mente, você classifica a água como “apropriada” ou como não “apropriada”.

Esse procedimento de classificação é fácil quando temos poucos laudos. Pense num monitoramento ambiental que temos vários pontos amostrados, como realizamos isso com milhares de dados? Como podemos classificar nossos resultados no R?

Neste tutorial, você aprenderá a classificar resultados utilizando dois tipos de loops, for e o if. Utilizaremos os intervalos de alguns parâmetros do solo que são apresentados no Manual de Adubação e de Calagem (Capítulo 5) da SBCS.

Por exemplo, caso os valores de pH do solo forem inferiores à 5, eles podem ser classificados como muito baixos, e se forem superiores à 6, classificaremos os valores como altos.

 

Você pode utilizar seus próprios dados, mas sugerimos que você siga nosso tutorial e após finalizar o processo, você poderá adaptar o código às suas necessidades.

Criando nossos dados

Vamos se basear em 2 parâmetros de solos, sendo eles: Teor de Argila (Textura) e pH (em H2O).

Para cria-los, vamos utilizar as funções set.seed(), round() e runif(). A primeira função, set.seed(), servirá somente garantirmos que os números que geramos serão iguais, pois a função runif() irão gerar números aleatórios.

E por último, temos a função round() que irã arredondar nossos números.


set.seed(1000) # Se você utilizar outro valor aqui, você irá obter outros números aleatórios, valores diferentes dos apresentados aqui.
n.amostras <- 10 # Número de amostras ou de linhas
dados <- as.data.frame(matrix(0, ncol = 2, nrow = n.amostras))
class_solos <- dados

dados[,1] <- round(runif(n.amostras, 0, 100))
dados[,2] <- round(runif(n.amostras, 0, 14))

nomes <- c(&amp;quot;textura&amp;quot;, &amp;quot;pH&amp;quot;)
colnames(dados) <- nomes

Além das funções comentadas anteriormente, também utilizamos uma função para gerar nossa matriz de dados e converte-la para um data.frame (matrix() e as.data.frame(), respectivamente); e por último, complementamos ela nomeando as colunas – função colnames().

Leia também: Tipos de dados e como ordena-los no R.

Classificando os resultados

Iniciaremos nossa classificação com os parâmetros Textura e depois realizaremos o parâmetro pH.

for (n in 1:n.amostras)
{
  if (dados$textura[n] <= 20.0)
  {class_solos[n,1] <- "Classe 4"}
  if (dados$textura[n] > 20.0 & dados$textura[n] <= 40.0)
  {class_solos[n,1] <- "Classe 3"}
  if (dados$textura[n] > 40.0 & dados$textura[n] <= 60.0)
  {class_solos[n,1] <- "Classe 2"}
  if (dados$textura[n] > 60.0)
  {class_solos[n,1] <- "Classe 1"}
}

Agora vamos a interpretação do loop (rotina) que criamos. Na primeira linha, indicamos que nossa rotina deverá ser executada para os valores de n entre 1 e 10 (nosso número de amostras).

  • Primeiro, ela será executada considerando n = 1, depois n assumirá o valor de 2, depois 3, e assim sucessivamente.
  • Posteriormente, dentro do loop For, indicamos, usando o loop if, que caso o valor da nossa textura seja inferior à 20%, a classificação do solo será Classe 4 (veja linhas 3 e 4).

Nas linhas 5 e 7 utilizamos o operador E para determinar o fim dos intervalos. Isto é, caso o teor de argila seja maior que 20%, mas inferior à 40%, a classificação do solo será Classe 3.

Exercício de Classificação

O código a ser implementado para o pH é semelhante ao código que acabamos de escrever. Abaixo encontra-se os intervalos de pH conforme manual de adubação e calagem para os estados do RS e SC.

pH:

  • Muito baixo: pH <= 5,0
  • Baixo: 5,1 – 5,4
  • Médio: 5,5 – 6,0
  • Alto: pH > 6,0

 

 

Resposta para classificação dos intervalos de pH
## pH (H2O)
for (n in 1:n.amostras)
{
  if (dados$pH[n] <= 5.0)
  {class_solos[n,2] <- "Muito Baixo"}
  if (dados$pH[n] > 5.0 & dados$pH[n] <= 5.4)
  {class_solos[n,2] <- "Baixo"}
  if (dados$pH[n] > 5.4 & dados$pH[n] <= 6.0)
  {class_solos[n,2] <- "Médio"}
  if (dados$pH[n] > 6.0)
  {class_solos[n,2] <- "Alto"}
}

 

 

 

Você poderá utilizar este procedimento para avaliar diversos dados e agilizar seu trabalho.

Lembre-se, esse código pode ser alterado para classificar a qualidade de recursos hídricos, emissões atmosféricas, teor de contaminantes e muitos outros, basta você modificar o número de parâmetros em análise e configurar os intervalos.


Não deixe de ler também: Como utilizar a função SE no Excel – Ela também pode ser utilizada para classificações.



Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".


Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de recuperação ambiental, geoprocessamento e ciência do solo. Busca soluções utilizando softwares como ArcGIS, R e MATLAB.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *