Logo Consolidação de arquivos

Tutorial Transformação Digital nº14

Autor
Afiliação

Fundação João Pinheiro

Resumo

Este documento R Markdown demonstra como ler, combinar e salvar arquivos de diferentes formatos (CSV, TXT, XLS e XLSX) contidos na pasta Planilhas. Combina todos os data frames obtidos em um único data frame utilizando do.call com rbin. Salva o data frame consolidado em um arquivo .csv.

1 Preparação

Carregue o pacote readxl para manipulação de arquivos Excel. Caso ainda não o tenha instalado, realize a instalação.

Este pacote possibilita a visualização e manipulação de arquivos Excel.

# Se necessário, instale o pacote readxl
#install.packages("readxl")
library(readxl)

2 Definindo a Pasta de Trabalho

Aqui, especificamos a pasta chamada Planilhas como o local onde todos os arquivos estão armazenados. É importante garantir que essa pasta esteja no mesmo diretório de trabalho do arquivo em R que está criando e do R Projet, ou definir o caminho completo para o diretório onde os arquivos estão localizados.

# Define a pasta onde os arquivos estão localizados
pasta <- "Planilhas"

3 Listando os Arquivos

Lista todos os arquivos com as extensões que for utilizar

# Lista todos os arquivos com as extensões CSV, TXT, XLS e XLSX
arquivos <- list.files(path = pasta, pattern = "\\.(csv|txt|xls|xlsx)$", full.names = TRUE)
  • list.files() é usada para listar todos os arquivos da pasta.
  • pattern = “.(csv|txt|xls|xlsx)$” especifica que estamos interessados apenas nos arquivos que terminam em .csv, .txt, .xls ou .xlsx.
  • full.names = TRUE retorna o caminho completo dos arquivos, o que é útil para evitar problemas ao ler os arquivos em diferentes diretórios.

4 Função para Ler Arquivos

Função para ler os arquivos de acordo com a extensão.

# Função para ler os arquivos de acordo com a extensão
ler_arquivo <- function(arquivo) {
  ext <- tools::file_ext(arquivo)
  if (ext == "csv") {
    df <- read.csv(arquivo, stringsAsFactors = FALSE)
  } else if (ext == "txt") {
    # Considerando que o arquivo TXT utiliza tabulação como separador
    df <- read.table(arquivo, header = TRUE, sep = "\t", stringsAsFactors = FALSE)
  } else if (ext %in% c("xls", "xlsx")) {
    df <- read_excel(arquivo)
    # Converter para data.frame, se necessário
    df <- as.data.frame(df)
  } else {
    stop("Formato não suportado: ", ext)
  }
  return(df)
}

Explicação detalhada: - tools::file_ext(arquivo) Obtém a extensão do arquivo para identificar o tipo de arquivo. O pacote tools é nativo no R, portanto, não é necessário instalá-lo.

  • read.csv() para arquivos .csv stringsAsFactors = FALSE: Garante que as colunas de texto sejam lidas como caracteres e não como fatores. Lê o arquivo CSV normalmente com vírgula como separador.

  • read.table() para arquivos .txt header = TRUE: Considera a primeira linha como cabeçalho (nomes das colunas). sep = “: Define a tabulação como separador de coluna, típico de arquivos TXT exportados de planilhas. Ideal para arquivos TXT com estrutura tabular.

  • read_excel() para arquivos .xls e .xlsx Utiliza o pacote readxl, que é capaz de ler tanto .xls quanto .xlsx. Como o read_excel() retorna um tibble, é convertido para um data.frame para manter a consistência no R base com as.data.frame().

  • stop() Se a extensão não for uma das esperadas, o script para a execução com um erro informativo.

5 Lendo os Arquivos e Armazenando na Lista

Lê cada arquivo e armazena os data frames em uma lista

# Lê cada arquivo e armazena os data frames em uma lista
lista_dados <- lapply(arquivos, ler_arquivo)
  • lapply() aplica a função ler_arquivo para cada item na lista de arquivos. O resultado é uma lista onde cada elemento é um data frame correspondente ao conteúdo de um arquivo.

6 Combinando os Data Frames

Combina todos os data frames em um único data frame

# Combina todos os data frames em um único data frame
consolidado <- do.call(rbind, lista_dados)
  • do.call(rbind, lista_dados) combina todos os data frames armazenados na lista em um único data frame.

  • rbind() empilha as linhas, ideal para arquivos que têm a mesma estrutura de colunas.

Se os arquivos tiverem colunas diferentes, o R preencherá com NA onde as colunas não coincidirem.

7 Salva o data frame combinado em um novo arquivo CSV

Salva o data frame combinado em um novo arquivo CSV

# Salva o data frame combinado em um novo arquivo CSV
write.csv(consolidado, file = "consolidado.csv", row.names = FALSE)
  • write.csv() salva o data frame combinado em um novo arquivo chamado consolidado.csv.
  • row.names = FALSE evita que o R salve números de linha como uma coluna adicional no CSV final. .

8 Considerações e Limitações

É importante garantir que todos os arquivos tenham a mesma estrutura de colunas, caso contrário, o resultado pode conter colunas com NA. Se algum arquivo estiver corrompido ou com formatação inesperada, a execução do script será interrompida. Para maior robustez, é possível adicionar verificações de qualidade nos dados antes de combiná-los.

9 Conclusão

Este script é útil para consolidar dados de diversas fontes e formatos em um único arquivo CSV, facilitando análises futuras. A abordagem modularizada através de uma função para leitura de arquivos permite fácil expansão para outros formatos no futuro.