Importando e exportando dados no R

Autor

Alberto Vicentini & Ricardo de Oliveira Perdiz

Data de Publicação

6 de abril de 2020

{{% notice "tip" %}} Esta postagem foi atualizada dia 26 de junho de 2024 visando a correção do endereço do arquivo de dados 'municipiosbrasil.csv' e também a correção do endereço do curso de Introdução ao R mencionado na caixa abaixo. {{% /notice %}}
{{% notice "warning" %}} Esta página foi adaptada da página [Importando e Exportando Dados no R](https://intror.netlify.app/importando-e-exportando-dados-no-r), que é parte da disciplina [BOT-89 Introdução ao R e Preparação de Dados](https://intror.netlify.app/), ligada ao Programa de Pós-graduação em Ciências Biológicas (Botânica) (PPGBOT) do Instituto Nacional de Pesquisas da Amazônia (INPA), Amazonas, Brasil, e ministrada anualmente pelo Dr. Alberto Vicentini (INPA). Neste ano de 2020, o professor Alberto Vicentini, que foi meu coorientador de doutorado cursado neste mesmo Programa de pós-graduação, me convidou para ser professor juntamente com ele. É um grande prazer! {{% /notice %}}

{{% youtube "3OYkXsoAHS4" %}}

Existem diversas funções para importar dados para objetos do R, incluindo funções para ler arquivos do excel (xls, ou xlsx), arquivos XML, arquivos *.DBF, etc. O R também tem pacotes que interagem diretamente com bancos de dados (mysql, postgressql, etc.). Não cobriremos esses tipos aqui, mas você pode pesquisar sozinho no site do R.

É frequente encontrarmos problemas de acentuação e na transferibilidade entre sistemas operacionais diferentes (Mac, Linux, Windows). A palavra chave aqui é Encoding de Caracteres.

Se você usa Windows, e no seu gerenciador de arquivos estes aparecem sem extensão (.csv,.txt,.doc, etc.), mude nas suas preferências para não ocultar extensões de arquivos conhecidos. Dessa forma você consegue ver os arquivos pelo tipo (extensão).

Importando arquivos de texto simples

Muitos dados que obtemos online e os próprios scripts do R são do formato mais simples que existe, que são arquivos de texto, geralmente arquivos salvos com extensões .csv ou .txt. Arquivos desse tipo você pode abrir em qualquer editor de texto e em qualquer sistema operacional e em qualquer versão. Isso garante arquivamento, longevidade e transferibilidade. Portanto, é a melhor forma de salvar seus dados e compartilhá-los.

Qualquer arquivo desse tipo pode ser lido pelos os editores de script do R ou RStudio. Pode também exportar planilhas do Excel ou BR-Libre-Open-Offices para esse formato.

É importante atentar em arquivos de texto contendo dados tabulados para:

  • O separador das colunas pode ser ;, “tabulação” (no R = \t), “vírgula”, qualquer símbolo que indique a separação das colunas (ou seja não está nas células).

  • Casas decimais podem ser . ou ,. Saiba como seus dados estão antes de importar para indicar o delimitador adequado, ou converter, por exemplo, usando gsub().

  • Datas - colunas com datas constituem um objeto de classe “date” no R, que a converte em número que pode ser usado em operações matemáticas. Dependendo de como seus dados estão formatados no original, é comum inversão de mês com dia entre, por exemplo, o sistema inglês (MM-DD-YYYY) e o sistema português (DD-MM-YYYY). Tenha controle disso.

Por isso, recomenda-se que:

  • Defina um padrão que você sempre usará para formatar teus dados ANTES de importá-los ao R. Dessa forma você irá memorizar rapidamente como importar os dados do jeito que você sempre prepara;

  • Padronize o Encoding (UTF8 é padrão Mac e Linux; Latin1 é padrão Windows) em arquivos TXT;

  • Padronize a decimal (ponto ou vírgula?);

  • Pradonize a quebra de Linha, i.e., o que indica no texto o início de uma nova linha (novamente diferente entre Mac, Linux e Windows);

  • Padronize se colunas de texto vão entre aspas;

  • Padronize como você dá nome às colunas - nome de colunas e de linhas não devem ser muito longos. Evite acentos e espaços em branco em nomes de colunas;

  • Se você usa planilha, recomendamos usar uma versão de software livre da família BR-Libre-Open-Office, pois na hora de exportar um “*.csv” você tem total controle sobre o “Encoding” e sobre a formatação do arquivo em geral. Tanto para ler como para salvar arquivos de planilhas.

Exemplo

Pacote base
  • read.table() - esta é a principal função que você irá usar para importar seus dados no R. Ela funciona para importar arquivos em formato de texto simples (.csv, .txt).

  • https://github.com/LABOTAM/IntroR/blob/main/dados/municipiosbrasil.csv - vamos usar este arquivo como exemplo, que contém as coordenadas geográficas dos municípios brasileiros. Baixe o arquivo para sua pasta de trabalho.

  • Abra o arquivo com um editor de texto simples (Bloco de Notas, Notepad++, TextWrangler, Gedit, etc.) e veja como está formatado:

    • Qual o separador de colunas? (é tabulação, como seu editor mostra isso);
    • Qual o Encoding dos caracteres? (consegue ver e editar isso no seu editor?);
    • Qual a quebra de linha? (consegue ver e editar isso no seu editor?
    • Aspas duplas ou simples definem colunas? (não tem nenhuma aspas!)
    • Abra o arquivo no BR-Libre-OpenOffice de sua preferência:
      • Veja os controles na importação quanto aos elementos acima
      • Salve o arquivo como *.ods
      • Salve novamente como *.csv - veja como você tem controle na exportação quanto aos elementos acima.
Pacote readr
  • read_delim - principal função para ler arquivos do pacote readr. Funciona de maneira parecida com o read.table com algumas pequenas diferenças: não converte colunas de texto que possam ser categorizadas em fatores (read.table faz isso por padrão), retorna um tibble no lugar de um data.frame (tibbles são data.frames diferentes na maneira como aparecem no console; além de mostrar apenas uma porção dos dados, para cada coluna há a indicação do tipo de variável presente), assume por padrão que o dado importado possui cabeçalho. Existem outras diferenças que podem ser melhor entendidas no site do pacote: https://github.com/tidyverse/readr. Os argumentos possuem nomes diferentes do que os utilizados em read.table e, como este, importa arquivos em formato de texto simples (.csv , .txt).
Pacote data.table
  • fread - principal função para ler arquivos do pacote data.table. Este pacote é muito conhecido devido à velocidade de suas ações, funcionando perfeitamente para dados grandes. Esta função possui uma particularidade: o usuário não precisa indicar o separador; automaticamente ele descobre o separador e lê o arquivo. Em casos especiais, é necessário a indicação do separador com o argumento sep, igual ao read.table. Ao ler um arquivo, a função retorna também um data.frame, porém com certas particularidas quanto à impressão do resultado na tela do console, como acontece com a função read_delim do pacote readr. Mais informações, leiam atentamente o site do pacote: https://github.com/Rdatatable/data.table. O pacote como um todo é uma excelente ferramenta na manipulação de dados. Como os pacotes citados acima, esta função é capaz de importar arquivos em formato de texto simples (.csv , .txt).

Importando o Excel diretamente

Os principais erros aqui podem ser por células unidas, cabeçalhos no topo da planilha, e acentos. Veja o Help das funções usadas para parametros opcionais para resolver isso.

Exportando Dados

Pacote base
  • write.table() é a principal função que você irá usar para exportar seus dados do R. Ela funciona para exportar arquivos em formato de texto simples (.csv, .txt) e usa basicamente os mesmos argumentos da função read.table().
Pacote readr
  • write_delim - principal função do pacote readr para exportar data.frames em formato de texto simples (.csv, .txt) e usa basicamente os mesmos argumentos da função read_delim, pertencente ao mesmo pacote.
Pacote data.table
  • fwrite - principal função do pacote data.table para exportar data.frames em formato de texto simples (.csv, .txt) e usa basicamente os mesmos argumentos da função read_delim, pertencente ao mesmo pacote.

Outras funções úteis

scan() - lê um arquivo de texto em qualquer formato para um vetor ou lista no R. Função genérica que bom conhecer.