Capítulo 20 Importando banco de dados e exportando resultados

A importação de banco de dados nem sempre é uma tarefa fácil, principalmente se há negligência na estrutura do arquivo no qual se deseja importar. Logo, é importante primeiro conhecer o arquivo, saber de que forma os dados estão arzenados dentro do arquivo. Isto provavelmente irá lhe poupar horas de trabalho.

Não será abordado neste material todas as formas possíveis de importação de banco de dados mas apenas os mais utilizados. Caso não encontre neste material como importar o arquivo desejado, acesse a página oficial do CRAN no link https://cran.r-project.org/doc/manuals/r-release/R-data.html para maiores detalhes.

Serão abordados a importação de dados no seguinte formato:

  • Cliboard (janela de transferência)
  • TXT
  • CSV
  • XLSX

Quando um conjunto de dados está bem arranjado/estruturado então podemos nos deparar com dois tipos basicamente:

  • Dado não-estruturado.
    • Normalmente são provenientes de pesquisas do tipo observacional/levantamento.
Layout de um dado não-estruturado

Figure 20.1: Layout de um dado não-estruturado

  • Dado estruturado
    • Normalmente proveniente de pesquisas do tipo experimental.
Layout de um dado estruturado

Figure 20.2: Layout de um dado estruturado

Se o conjunto de dados tem cabeçalho, evite palavras compostas e caracteres como acentos. Por exemplo, ao invés de utilizar Conversão Alimentar use conversao_alimentar.

Evite utilizar nomes longos do arquivo que será importado. Ao invés de utilizar dados do experimento da maria joaquina.xlsx utilize dadosJoaquina.xlsx ou dados_joaquina.xlsx.

Caso o arquivo a ser importado seja proveniente de uma planilha eletrônica (Excel por exemplo) e tiver outras análises e “penduricalhos”, faça uma cópia do arquivo e deixe nesta cópia apenas os dados que serão importados.

Lembre-se que os dados que serão importados não é para estar bonito e seguir as premissas da gramática. É para ser prático, limpo e funcional. Deixe as formatações para o relatório.

É possível ler dados caso eles não estejam nos formatos mencionados anteriormente. Entretanto, irá requerer um conhecimento de programação mais avançado e, mesmo assim, irá levar tempo para que os dados estejam no “formato” ideal para análise.

20.1 Método Clipboard

Chamamos de método e não formato porque justamente clipboard não é uma forma específica de arquivo mas, uma maneira de importar dados para dentro do R.

É útil quando queremos fazer uma análise rápida de um certo conjunto de dados. Entretanto, se pretendes fazer uma análise duradoura certamente este método não será útil e muito menos produtivo.

Neste caso os dados serão “copiados” de um arquivo (PDF, TXT, planilha eletrônica) e colocados na “área de transferência”. Uma vez realizado este procedimento podemos executar o código abaixo:

dad1 = read.table(file = 'clipboard',
                  sep = '\t',
                  header = TRUE)

Obviamente que os dados precisam estar configura conforme as figuras 20.1 e 20.2.

20.2 Formatos TXT e CSV

As funções utilizadas para ler estes tipos de arquivos é nativa do R, ou seja, são as funções read.table e read.csv.

A função read.csv é um wrapper (invólucro) da função read.table. Portanto, basta sabermos utilizar apenas a função read.table.

Os principais argumentos da função read.table são:

  • file
    • É do tipo string. Você deverá fornecer o nome completo do arquivo que deseja importar. Exemplo: “dados_soja.txt” ou “dados_soja.csv”.
  • header
    • É do tipo boolean. Por padrão é FALSE, ou seja, a função por padrão entende que não há cabeçalho no seu conjunto de dados. Caso haja cabeçalho, caso mais comum, então devemos informar no argumento TRUE.
    • sep
      • É do tipo string. Você deverá informar qual é o caractere delimitador de colunas. Geralmente é um “espaço em branco”. Neste caso, não precisa informar nada. Em arquivos do tipo “CSV” é mais comum os delimitadores serem “,” ou “;”. Neste caso você deve fornecer tal informação no argumento.
    • dec
      • É do tipo string. Por padrão é “.”. Caso tenha colunas com decimais e cujo o separador de casas decimais seja “,”, então você deve informar tal separador para que a leitura dos números seja feita corretamente.
    • stringAsFactors
      • É do tipo boolean. Por padrão é FALSE. Se no seu banco de dados há uma coluna que não seja uma variável aleatória mas, um fator de estudo (tratamento), então é conveniente que informe TRUE neste argumento.

Para mais detalhes consulte help(read.table).


20.3 Formato “XLSX”

É o formato da planilha eletrônica do pacote Office da empresa Microsoft, mais especificamente do Excel.

Existem alguns pacotes que permitem importar arquivos no formato “.XLSX” como: readxl, openxlsx,openxlsx2, xlsx e writexl.

Iremos utilizar neste curso o pacote openxlsx devido os autores do curso estarem mais familizarizados. Os usuários podem consultar a documentação de ajuda dos demais pacotes citados caso tenham interesse.

Partindo do princípio que as premissas estejam de acordo, a leitura do formato “.XLSX” é direta e simples. Seguem os principais argumentos da função read.xlsx.

  • sheet
    • É do tipo numeric. Indica qual aba da planilha você deseja importar. Por padrão é a aba 1.
  • detectDates
    • É do tipo boolean. Por padrão é FALSE. Se existem datas formatadas na sua planilha, então deve modificar este argumento para TRUE, caso contrário as datas não serão reconhecidas.

Para maiores detalhes consulte a documentação do pacote.

20.3.2 Exercícios

  1. Baixe e carregue o seguinte conjunto de dados: https://lec.pro.br/download/R/dados/AndersonPg1.txt. Após a importação estime por tipo de filial: média, variância, desvio padrão, mínimo, máximo, coeficiente de variação. Faça um histograma e um boxplot para cada tipo de filial. Como você expressaria a estimativa da média em um artigo científico?

20.4 Exportando resultados

A melhor forma de exportar resultados certamente é aquela que combina o texto que você deseja escrever juntamente com o resultado que desejas expor. Para isso, é necessário que tenhas conhecimento básico de LaTeX ou Markdown para elaborar relatórios belíssimos em conjunto com a linguagem R. Se pretendes alcançar este nível visite o site https://rmarkdown.rstudio.com/ para ver exemplos e se encantar com a vasta possibilidades de gerar documentos das mais variadas formas utilizando R e Markdown. Como a linguagem Markdown é simples, provavelmente conseguirá gerar seus primeiros relatórios. Mas aconselho também que estude a linguagem LaTeX para ampliar seu arsenal de escrita de relatórios automáticos.

Os comandos que iremos mostrar a seguir irá lhe poupar tempo do comando “CTRL + C” + “CTRL + V”.

Quando se tem um script longo e que provavelmente irá utilizá-lo mais de uma vez, é conveniente que carregue os resultados no ponto em que parou ao invés de executá-lo novamente.

Primeiro, salve todos os objetos e resultados da seguinte forma:

save.image('CursoR.RData')

Quando for utilizar o script novamente carregue o arquivo .RData que foi salvo.

load('CursoR.RData') # Para carregar o que foi feito e executado.

A técnica exposta anteriormente não é um “método de exportar resultados”. Entretanto, pode ser útil nas situações no qual ainda não exportou os resultados e, queira carregar as análises rapidamente para tal finalidade.

Para exportar resultados de uma maneira simples pode ser utilizado a função sink. Com esta função é possível salvar os output e message.

Os formatos no qual se é possivel salvar são: “.doc” e “.txt”. Caso tente salvar no formato “.docx” o arquivo não irá abrir. Não sei o motivo!

O arquivo será salvo no diretório atual de execução do R. Sempre que há dúvida qual é o diretório atual em execução, use o comando getwd().

Segue um exemplo:

# -----------------------------------------------------------------------------
# Salvando os resultados
# -----------------------------------------------------------------------------
sink('analysis.doc',
     type = 'output')

summary(iris)

media = mean(iris$Sepal.Length)
media

sink()

Caso queira salvar tabelas nos mais variados formatos como matrix, data.frame, tables os exemplos a seguir serão úteis.

# -----------------------------------------------------------------------------
# Salvando matrizes e data.frames em excel
# -----------------------------------------------------------------------------
tabsimp = rep(c('Mulheres',
                'Homens'),
              c(20, 12)) 
tabsimp1 = table(tabsimp)

write.table(tabsimp1,           # O objeto a ser salvo
            'tabsimp.xlsx',     # O nome do arquivo
            row.names = FALSE, # Com nome das linhas???
            quote = FALSE)     # Com aspas??

write.table(modmean,
            'modmean.xls',
            row.names = FALSE,
            quote = FALSE,
            sep = '\t')        # Separar as colunas
            
write.table(iris,
           'iris.xlsx',
           row.names=FALSE,
           quote=FALSE)