Básico 2024 | Aula 14

Importando e Exportando dados

Encarte

Filosofia de publicação (Selo DC)

Apoio CEAC e UFSJ

Livro de Apoio

Usaremos Batista e Oliveira (2022):

Introdução

  • Terceiro princípio do R (Chambers, 2016): “Interfaces para outros programas são parte do R”;
  • Apesar do R Core Team ainda limitar a definição do R como um ambiente para a computação estatística, esta ferramenta se tornou tão versátil que hoje torna humilde essa definição;
  • A facilidade do R interagir com outros softwares, linguagens, etc., é muito grande, e assim pode se tornar complexo a importação e exportação de dados;
    • Ex: S, SPSS, SAS, Minitab, Python, EXCEL, SQL, …

Introdução

  • Um outro fator e tema atual é o tamanho dos bancos de dados (Big Data), e aí muitas vezes precisamos de outros recursos, como o uso de APIs, por exemplo;
  • Web scraping, Etc…
  • Hoje, temos uma grande ferramenta de exportação de documentações no R, com o uso do R Markdown!
  • Exportações interativas, por exemplo, com o uso do pacote shiny.
  • Contudo, nos limitaremos a uma breve introdução sobre o assunto: Importação/Exportação de dados!

Banco de dados

Limitaremos a:

  • Arquivos de texto: <>.txt, <>.csv;
  • Arquivos binários: <>.xls, <>.xlsx;
  • Arquivos da Web
  • Banco de dados digitados manualmente pelo console.

Em resumo o que acontecerá no R

Ideias básicas

  • Escrever/Importar um banco de dados
  • No R:
    • verificar diretório de trabalho
    • importar os dados usando read.table()
    • criar um nome e associar ao objeto de classe data.frame com os dados importados
  • No RStudio tem alguns recursos que podem facilitar a importação de dados

Preparação dos dados

No banco de dados, sempre:

  • Separar as variáveis em colunas;
  • Valores em linha;
  • Sempre a primeira linha das colunas representará o nome da variável;
  • Quanto mais caracteres diferentes do padrão ASCII, mais difícil poderá ser a leitura dos dados.

Preparação dos dados

Preparação dos dados

Sugestões ao banco de dados:

  • devemos evitar símbolos fora do padrão alfanumérico;
  • devemos evitar o uso de letras minúsculas e maiúsculas. Isso facilitará o acesso a essas variáveis. Contudo, lembramos do padrão de nomes sintáticos;
  • como o banco de dados será utilizado para que um programa faça a sua leitura, portanto, deixamos a formatação da apresentação dos dados em arquivos específico, evitando qualquer outro tipo de informação que não seja os dados;

Preparação dos dados

  • devemos evitar palavras longas, por exemplo, segundavariavel (mau escolha), segvar (boa escolha), seg_var (boa escolha);
  • devemos evitar palavras compostas com espaço entre elas. Como alternativa, usamos o símbolo “_”, por exemplo, var 2 (mau escolha), var2 (boa escolha), var_2 (boa escolha);
  • devemos evitar “.” (ponto) em palavras compostas, pois esta sintaxe é responsável pela criação de um método para uma determinada classe no sistema S3 (um dos paradigmas de orientação a objetos no R), e isto pode causar possíveis conflitos na interpretação dos dados.

Importação de dados

Usando o console:

> # Criando e inserido os elementos do objeto dados
> x <- scan()
1:

Vamos usar o R para verificar este comando!

Importação de dados

  • Importando <>.csv:
    • Principal característica:
      • Separação das variáveis, geralmente, por: “;”!
  • Importando <>.txt:
    • Principal característica:
      • Separação das variáveis por espaço!
      • Maior risco de erro na importação!
  • Importar arquivos do EXCEL: <>.xls, <>.xlsx - pacotes: readxl, writexl!

Importação de dados

Exemplos:

Importação de dados no RStudio

Importação de dados no R

  • Funções utilizadas: setwd(), getwd(), read.table()
  • Detalhamento da função read.table():
    • file: banco de dados;
    • header: argumento lógico, se header = TRUE, então implica dizer que as variáveis estão identificadas por um nome, isto é, a primeira linha do banco de dados representa o nome das variáveis; se header = FALSE (padrão), caso contrário;

Importação de dados no R

  • Detalhamento da função read.table():
    • sep: separador de variáveis nas colunas, o padrão é sep = "", isto é, sem espaços; no caso de arquivos de extensão: <>.csv, geralmente, usamos para este argumento sep = ";", identificando que a separação das variáveis está representada por “;”;
    • dec: separador de casas decimais, sendo o padrão dec = ".".

Código 5.1 (Batista e Oliveira, 2022)

# Diretorio
getwd()
# Mudando para o diretorio de interesse
setwd('C:/eambr01')
# Verificando os arquivos no diretorio de trabalho
list.files()
# Importando os dados apontando para o diretorio do arquivo
dados1 <- read.table(file = 'C:/eambr01/alfafa.txt', header = TRUE)
# Considerando que o arquivo esta no diretorio de
# trabalho, isto eh, getwd()
dados2 <- read.table('alfafa.txt', header = TRUE)
# Importando os dados com decimais com ',' apontando para o diretorio do arquivo
dados3 <- read.table(file = 'C:/eambr01/dadost1980.txt', header = TRUE, dec = ',')
# Considerando que o arquivo esta no diretorio de
# trabalho, isto eh, getwd()
dados4 <- read.table(file = 'dadost1980.txt', header = TRUE, dec = ',')
# Importando os dados com decimais ',', e separados por ';' apontando para o diretorio do arquivo
dados5 <- read.table(file = 'C:/eambr01/producao.csv', header = TRUE, dec = ',', sep = ';')
# Considerando que o arquivo esta no diretorio de
# trabalho, isto eh, getwd()
dados6 <- read.table(file = 'producao.csv', header = TRUE, dec = ',', sep = ';')
# Importando da internet
dados7 <- read.table(file = 'https://raw.githubusercontent.com/bendeivide/book-eambr01/main/files/alfafa.txt', header = TRUE)

Exportação de dados

Extensões exportadas:

  • <>.txt: Pacote nativo utils
  • <>.xlsx: Pacote writexl
  • Código \(\LaTeX\): Pacote xtable

Exportação de dados

Funções usadas: utils::write.table(), writexl::write_xlsx(), xtable::xtable()

Código 5.5 (Batista e Oliveira, 2022)

# Instalando e/ou carregando o pacote 'readxl'
#install.packages('readxl') # Se nao tiver instalado!
library('readxl')
# Vendo exemplos de arquivo no pacote
readxl_example()    

# Caminho do arquivo
arquivo_xlsx <- readxl_example('datasets.xlsx')
# Estrutura de dado 'tibble'
dado <- read_excel(arquivo_xlsx); dado  

# Estrutura de dado 'quadro de dado (data frame)'
head(as.data.frame(dado))

# Arquivo temporario
x <- tempfile(pattern = 'dados', fileext = '.txt')

# Objeto
d <- data.frame(x = 1, y = 1:10)

# Exportando os dados
write.table(d, file = x, sep = '\t', quote = FALSE, row.names = FALSE)
# sep = '\t' => representa uma  TAB entre as colunas
# file = x => Essa saida foi um arquivo temporario, mas se desejar exportar os dados para um arquivo especifico, em um diretorio específico, basta inserir esse caminho entre
#aspas, por exemplo, file = 'C:\dados.txt'

# Abrindo o arquivo
file.show(x)

Código 5.5 (Batista e Oliveira, 2022)

Código 5.6 (Batista e Oliveira, 2022)

# Dados do pacote nativo 'datasets'
library('datasets')
dados <- head(cars); dados # Quadro de dados (Data frame)

# Instalando e/ou carregando writexl
install.packages('writexl')
library(writexl)
# Diretorio de trabalho
dirtrab <- getwd()
# Nome do arquivo
nome <- 'dados.xlsx'
# Caminho
caminho <- paste(dirtrab, nome, sep = '/')
# Exportando esses dados para um '.xlsx'
file <- writexl::write_xlsx(dados, caminho)
# Mortrando o arquivo
file.show(file)

# Vamos criar agora listas de quadro de dados
d1 <- head(cars); d1 # valores iniciais de 'cars'
d2 <- tail(cars); d2 # valores finais de 'cars'

lista <- list(elem01 =d1,  elem02 =02); lista


# Diretorio de trabalho
dirtrab <- getwd()
# Nome do arquivo
nome <- 'lista.xlsx'
# Caminho
caminho <- paste(dirtrab, nome, sep = '/')
# Exportando esses dados para um '.xlsx'
file <- writexl::write_xlsx(lista, caminho)
# Mortrando o arquivo
file.show(file)

Código 5.6 (Batista e Oliveira, 2022)

Código 5.7 (Batista e Oliveira, 2022)

Comandos no R:

# Instalando e/ou carregando o pacote 'xtable'
install.packages('xtable')
# Carregando/Anexando
library(xtable)
library(datasets)
# Dados
dados <- head(mtcars[,1:3]); dados
# Exportando para LaTeX
xtable(dados)

Código 5.7 (Batista e Oliveira, 2022)

Saída no console:

\begin{table}[ht]
  \centering
  \begin{tabular}{rrrr}
    \hline
    & mpg & cyl & disp \\
    \hline
    Mazda RX4 & 21.00 & 6.00 & 160.00 \\
    Mazda RX4 Wag & 21.00 & 6.00 & 160.00 \\
    Datsun 710 & 22.80 & 4.00 & 108.00 \\
    Hornet 4 Drive & 21.40 & 6.00 & 258.00 \\
    Hornet Sportabout & 18.70 & 8.00 & 360.00 \\
    Valiant & 18.10 & 6.00 & 225.00 \\
    \hline
  \end{tabular}
\end{table}

Obrigado

Sugestões, perguntas, críticas…

Referências

BATISTA, B. D. O.; OLIVEIRA, D. A. B. J. R básico. Ouro Branco, MG, Brasil: [s.n.], 2022.
CHAMBERS, J. M. Extending R. Boca Raton, Florida: Chapman; Hall/CRC, 2016.