Formigas pelo Brasil
  • APRESENTAÇÃO
  • INÍCIO
  • COLETA DOS DADOS
  • ANÁLISES
  • RESULTADOS
  • CONCLUSÃO

On this page

  • Fonte de dados
  • Tratamento e filtragem

Pacotes utilizados

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
suppressPackageStartupMessages({
library(rgbif)
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggpubr)
library(viridis)
library(sf)
library(geobr)
library(vegan)
library(knitr)
library(leaflet)
})

Fonte de dados

Os dados utilizados neste estudo foram obtidos por meio da função occ_download_get() do pacote rgbif no R, acessando diretamente a base de dados da Global Biodiversity Information Facility (GBIF). Foi realizado um download contendo exclusivamente registros de ocorrência da família Formicidae, totalizando 52.059 registros brutos.

occ_download_wait('0054387-250525065834625')
<<gbif download metadata>>
  Status: SUCCEEDED
  DOI: 10.15468/dl.5hksr5
  Format: SIMPLE_CSV
  Download key: 0054387-250525065834625
  Created: 2025-06-18T14:31:33.117+00:00
  Modified: 2025-06-18T14:37:51.920+00:00
  Download link: https://api.gbif.org/v1/occurrence/download/request/0054387-250525065834625.zip
  Total records: 52059
dados_formigas <- occ_download_get("0054387-250525065834625", overwrite = TRUE) %>%
  occ_download_import()

Tratamento e filtragem

Seleção das variáveis relevantes:

Foram mantidas apenas as colunas com informações sobre o gênero (genus), estado (stateProvince) e coordenadas geográficas (decimalLatitude, decimalLongitude) e registros com qualquer campo NA nas colunas selecionadas foram excluídos.

dados_filtrados <- dados_formigas %>%
  select(genus, stateProvince, decimalLatitude, decimalLongitude) %>%
  filter(!is.na(genus), !is.na(stateProvince),
         !is.na(decimalLatitude), !is.na(decimalLongitude)) %>%
  rename(
    genero = genus,
    estado = stateProvince,
    latitude = decimalLatitude,
    longitude = decimalLongitude
  )

Padronização dos nomes dos estados e remoção de dados

padroniza_estado <- function(estado) {
  estado <- tolower(estado)
  estado <- gsub("ã", "a", estado)
  estado <- gsub("á", "a", estado)
  estado <- gsub("ă", "a", estado)
  estado <- gsub("â", "a", estado)
  estado <- gsub("é", "e", estado)
  estado <- gsub("ê", "e", estado)
  estado <- gsub("í", "i", estado)
  estado <- gsub("ó", "o", estado)
  estado <- gsub("ô", "o", estado)
  estado <- gsub("ú", "u", estado)
  estado <- gsub("ç", "c", estado)
  estado <- trimws(estado)

  if (estado %in% c("amapa", "amapá")) return("Amapá")
  if (estado %in% c("amazonas", "state of amazonas", "manaus")) return("Amazônas")
  if (estado %in% c("ce", "ceara", "ceará")) return("Ceará")
  if (estado %in% c("df", "distrito federal", "federal district")) return("Distrito Federal")
  if (estado %in% c("espirito santo", "espírito santo", "esp�rito santo")) return("Espírito Santo")
  if (estado %in% c("estado de sao paulo", "sp", "sao paulo", "são paulo", "s�o paulo", "sao paulo ", "Săo paulo")) return("São Paulo")
  if (estado %in% c("goias", "goiás", "goi�s")) return("Goiás")
  if (estado %in% c("maranhao", "maranhão")) return("Maranhão")
  if (estado %in% c("mato grosso", "matto grasso")) return("Mato Grosso")
  if (estado %in% c("mato grosso do sul", "matto grasso do sul", "morraria do sul")) return("Mato Grosso do Sul")
  if (estado %in% c("mg", "minas gerais", "minas gerias")) return("Minas Gerais")
  if (estado %in% c("para", "pará", "par�")) return("Pará")
  if (estado %in% c("paraiba", "paraíba")) return("Paraíba")
  if (estado %in% c("parana", "paraná", "paranã", "paran�")) return("Paraná")
  if (estado %in% c("piaui", "piauí")) return("Piauí")
  if (estado %in% c("rio de janeiro", "rio janeiro", "rio de janeira")) return("Rio de Janeiro")
  if (estado %in% c("rondonia", "rondônia", "rond�nia", "rodonia", "rondónia")) return("Rondônia")
  if (estado %in% c("santa catarina", "santa catarina (catharina)")) return("Santa Catarina")
  if (estado %in% c("tocantins", "to")) return("Tocantins")

  return(paste0(toupper(substring(estado, 1, 1)), substring(estado, 2)))
}

# 2. Criar a tabela já com estado corrigido direto
dados_filtrados <- dados_formigas %>%
  select(genus, stateProvince, decimalLatitude, decimalLongitude) %>%
  filter(!is.na(genus), !is.na(stateProvince),
         !is.na(decimalLatitude), !is.na(decimalLongitude)) %>%
  mutate(stateProvince = sapply(stateProvince, padroniza_estado)) %>%
  rename(
    genero = genus,
    estado = stateProvince,
    latitude = decimalLatitude,
    longitude = decimalLongitude
  )

#Criar um novo objeto só com registros que têm estado informado
dados_com_estado <- dados_filtrados %>%
  filter(
    !is.na(estado),               
    estado != "",                
    estado != " ",                
    !grepl("Nao informado", estado, ignore.case = TRUE) 
  )

Remoção de registros com gênero ausente

dados_validos <- dados_com_estado %>%
  filter(!is.na(genero), genero != "", genero != " ")

Conversão espacial e associação com biomas

Os registros com coordenadas geográficas foram convertidos para objetos espaciais com o pacote sf, e posteriormente associados aos biomas brasileiros utilizando o shapefile oficial de biomas do Brasil (IBGE 2019), acessado via pacote geobr.

# Baixar o shapefile de biomas
biomas <- read_biomes(year = 2019)

# Transformar os dados em objeto espacial (geográfico)
dados_sf <- st_as_sf(dados_validos,
                     coords = c("longitude", "latitude"),
                     crs = 4326)

# Transformar os biomas para o mesmo CRS
biomas <- st_transform(biomas, crs = 4326)

# Juntar os dados com os biomas por interseção espacial
dados_com_bioma <- st_join(dados_sf, biomas["name_biome"]) %>%
  filter(!is.na(name_biome)) %>%
  rename(bioma = name_biome)