Projeto de Curso - Fundamentos de R Aplicados à Análise de Dados Geoquímicos
O objetivo deste projeto é reproduzir os diagramas de concórdia apresentados por Caxito et al. (2026), utilizando a linguagem R e o pacote estatístico IsoplotR. A partir dos dados suplementares originais, o fluxo de trabalho busca automatizar o processamento das razões isotópicas U-Pb utilizando as ferramentas aprendidas no curso especial ministrado pelo Dr. Danilo Cruz no Programa de Pós-Graduação em Geologia e Geoquímica da Universidade Federal do Pará (PPGG - UFPA).
Carregamento de pacotes
Para iniciar a análise, carregamos as bibliotecas fundamentais para o fluxo de dados. O pacote readxl é utilizado para a leitura do arquivo Excel que contém os dados isotópicos, enquanto o janitor auxilia na limpeza de nomes de colunas e remoção de dados vazios. Para a manipulação e organização dos dados, utilizamos o dplyr. Por fim, o pacote IsoplotR é a ferramenta para o processamento estatístico e geração dos diagramas geocronológicos.
library(readxl)library(janitor)
Anexando pacote: 'janitor'
Os seguintes objetos são mascarados por 'package:stats':
chisq.test, fisher.test
library(dplyr)
Anexando pacote: 'dplyr'
Os seguintes objetos são mascarados por 'package:stats':
filter, lag
Os seguintes objetos são mascarados por 'package:base':
intersect, setdiff, setequal, union
library(IsoplotR)
Importação de Dados
Nesta etapa, definimos o ambiente de trabalho e identificamos o arquivo de dados. A planilha utilizada contém dados suplementares de Caxito et al. (2026), focados na datação U-Pb de “carbonatos de capa” ediacaranos. Realizamos uma leitura inicial da aba “TER-A” (Amostra Terconi da Formação Guia - Faixa Paraguai), aplicando um skip = 3 para ignorar os metadados do cabeçalho e acessar diretamente a matriz de dados isotópicos.
#Definir o diretório de trabalhosetwd("C:/Users/malek/OneDrive/Área de Trabalho/Curso R/Arquivos")#Definir o nome do arquivonome_do_arquivo <- ("caxito.xlsx")#Ler a planilha TER-A da pasta com dados isotópicos de carbonatos, disponível como material suplementar em Caxito et al. (2026)ter_a <-read_excel(nome_do_arquivo, sheet ="TER-A", skip =3)
Antes do processamento, os dados passam por uma triagem. Removemos linhas vazias e selecionamos as colunas específicas que o método read.data() do IsoplotR exige utilizando format = 1, ierr = 4 (Razões 07/35, 06/38 e correlação de erro em 2sigma%). Esta amostra servirá como base para definir o padrão de colunas que automatizará a leitura das demais planilhas do projeto.
#Remover linhas vaziaster_a <- ter_a |>remove_empty("rows")#Selecionar as colunas para o método read.data() do isoplotR.ter_a_select <- ter_a |>select(10:14)#Transformar os dados para o formato de leitura do isoplotRteraupb <-read.data(ter_a_select, method ="U-Pb", format =1, ierr =4)
Plotando o diagrama
Esta etapa consiste na visualização dos resultados através de diagramas de Concórdia (tipo Tera-Wasserburg). O uso desse diagrama é particularmente eficaz para carbonatos, pois permite visualizar melhor a mistura com o chumbo comum inicial. Os gráficos são gerados com um gradiente de cor baseado na concentração de Urânio (ppm), facilitando a identificação de padrões de heterogeneidade química nos cristais analisados.
#Plotar o diagrama de concordiateraupb |>concordia(type =2, show.age =2, levels =as.numeric(ter_a$`U(ppm)`), main ="Concordia diagram for TER-A sample\n\n\n")
Tornando o Código Reprodutível
Dada a grande quantidade de planilhas (abas) no arquivo, implementamos um fluxo de automação. O código identifica todos os nomes de abas, ignora abas indicadas (nesse caso os padrões) e processa cada amostra individualmente. Para cada aba, o script seleciona as colunas baseando-se nos nomes capturados da planilha TER-A, que utilizamos como referência, converte os valores para formato numérico e remove entradas incompletas.
#Extrair o nome das abas do arquivo xlsxabas <-excel_sheets(nome_do_arquivo)# Capturar os nomes das colunas de referência da planilha TER-Atemp_tera <-read_excel(nome_do_arquivo, sheet ="TER-A", skip =3, n_max =0) |>clean_names()
# Extraímos os nomes das colunas que estão nas posições 10 a 14colunas_referencia <-colnames(temp_tera)[10:14]# Definir abas para ignorar, caso desejado# Como esse arquivo tem algumas planilhas com formato diferente, vamos ignora-lasignorar <-c("WC 1", "RM", "DB") amostras <- abas[!abas %in% ignorar]# Loop para processar cada planilhafor (nome_aba in amostras) {# Leitura e limpeza dos dados dados_brutos <-read_excel(nome_do_arquivo, sheet = nome_aba, skip =3) |>clean_names() |>remove_empty("rows")# Seleção das colunas para uso no isoplotR dados_isoplot <- dados_brutos |>select(all_of(colunas_referencia)) |>mutate(across(everything(), as.numeric)) |>na.omit()# Transformar para formato IsoplotR (Assumindo ierr=4 para 2sigma %) upb_data <-read.data(as.matrix(dados_isoplot), method ="U-Pb", format =1, ierr =4)# Gerar o diagrama de Concordia (Tera-Wasserburg)concordia(upb_data, type =2, show.age =2, levels =as.numeric(dados_brutos$u_ppm), clabel ="U (ppm)",main =paste("Diagrama de Concordia -", nome_aba, "\n\n\n"))}