IntroduçãoA entrada de dados no R pode ser realizada de diferentes formas. O formato mais adequado vai depender do tamanho do conjunto de dados, e se os dados já existem em outro formato para serem importados ou se serão digitados diretamente no R. Show
A seguir são descritas as formas de entrada de dados com indicação de quando cada uma das formas deve ser usada. Os três primeiros casos são adequados para entrada de dados diretamente no R, os seguintes descrevem como importar dados já disponíveis eletronicamentede um arquivo texto, em outro sistema ou no próprio R. Posteriormente também será mostrado como fazer para exportar bases de dados geradas e/ou alteradas dentro do R. Entrada de dados diretamente no RVetoresA forma mais básica de entrada de dados no R é através da função As funções básicas de entrada de dados são:
A partir destas funções básicas podemos criar objetos de classes mais específicas com
Entrada via tecladoUsando a função |
Sexo | ||
---|---|---|
Condição | Masculino | Feminino |
Fumante | 49 | 54 |
64 | 61 | |
37 | 79 | |
52 | 64 | |
68 | 29 | |
Não fumante | 27 | 40 |
58 | 39 | |
52 | 44 | |
41 | 34 | |
30 | 44 |
csv
.read.table()
.write.table()
.c()
, rep()
, data.frame()
,
etc.)Usando os formatos textual e binário para ler/escrever dados
As formas mais comuns de entrada de dados no R são através da entrada direta pelo teclado (e.g. c()
ou scan()
), ou pela importação de arquivos de texto (e.g. read.table()
). No etanto, ainda existem mais dois formatos par armazenar dados para leitura no R: o textual e o binário.
O formato binário é aquele armazenado em um arquivo binário, ou seja, um arquivo que contém apenas 0s e 1s, e possui um formato específico que só pode ser lido por determinado software ou função. É o oposto de um arquivo de texto, por exemplo, que podemos abrir e editar em qualquer prorama que edite texto puro. O formato textual é o intermediário entre o texto puro e o binário. Os dados em formato textual são apresentados como texto puro, mas contém informações adicionais, chamados de metadados, que preservam toda a estrutura dos dados, como as classes de cada coluna de um data frame.
Formato textual
O formato textual é muito útil para compartilhar conjuntos de dados que não são muito grandes, e onde a formatação (leia-se: classes de objetos) precisa ser mantida.
Para criar um conjunto de dados no formato textual, usamos a função dput()
. Vamos criar um data frame de exemplo e ver o resultado da chamada dessa função:
da <- data.frame(A = c(1, 2), B = c("a", "b"))
dput(da)
structure(list(A = c(1, 2), B = structure(1:2, .Label = c("a",
"b"), class = "factor")), .Names = c("A", "B"), row.names = c(NA,
-2L), class = "data.frame")
Note que o resultado de
dput()
é no formato do R, e preserva metadados como as classes do objeto e de cada coluna, e os nomes das linhas e colunas.
Outas classes de objetos são facilmente preservadas quando armazenadas com o resultado de dput()
. Por exemplo, uma matriz:
ma <- matrix(1:9, ncol = 3)
dput(ma)
structure(1:9, .Dim = c(3L, 3L))
E uma lista:
la <- list(da, ma)
dput(la)
list(structure(list(A = c(1, 2), B = structure(1:2, .Label = c("a",
"b"), class = "factor")), .Names = c("A", "B"), row.names = c(NA,
-2L), class = "data.frame"), structure(1:9, .Dim = c(3L, 3L)))
A saída da função dput()
pode ser copiada para um script do R, para garantir que qualquer pessoa que venha usar o código (incluindo você no futuro), usará os dados no formato correto
(esperado). Isso é muito importante para a pesquisa reproduzível!
A saída de dput()
também pode ser salva diretamente em um arquivo de script do R, por exemplo,
dput(da, file = "da.R")
irá criar o arquivo da.R
com o resultado da função. Para importar os dados salvos dessa forma, usamos a função dget()
,
da2 <- dget(file = "da.R")
da2
A B
1 1 a
2 2 b
Múltiplos objetos podem ser armazenados em formato textual usando a função dump()
.
dump(c("da", "ma", "la"), file = "dados.R")
Note que os objetos são passados como um vetor de
caracteres, e um arquivo chamado dados.R
é criado com todos os objetos no formato textual. Para importar estes objetos para uma sessão do R, usamos a função source()
,
source("dados.R")
que já cria os objetos na sua área de trabalho com os mesmos nomes e atributos como foram armazenados.
Formato binário
Armazenar dados em formato binário é vantajoso quando não há uma forma “fácil” de armazenar os dados em formato de texto puro ou textual. Além disso, algumas vezes o formato binário possui maior eficiência em termos de velocidade de leitura/escrita, dependendo dos dados. Outra vantagem é que valores numéricos geralmente perdem precisão quando armazenados em texto ou textual, enquanto que o formato binário preserva toda a precisão (embora essa perda de precisão seja desprezível na maioria dos casos).
Para salvar um objeto contendo dados no R, usamos a função save()
. Por exemplo, para armazenar o objeto da
criado acima, fazemos
save(da, file = "dados.rda")
Esse comando irá criar o arquivo (binário) da.rda
. Note que a extensão .rda
é comumente utilizada para dados binários do R, mas não é única.
Paa salvar mais de um objeto no mesmo arquivo, basta passar os nomes na mesma função
save(da, ma, file = "dados.rda")
A função save.image()
pode ser utilizada se a intenção é salvar todos os objetos criados na sua área de trabalho (isso inclui qualquer objeto, não só os conjuntos de dados). Nesse caso, podemos fazer
save.image(file = "workspace.RData")
Note que
quando foi utilizada a função save()
, a extensão do arquivo foi rda
, e com save.image()
foi RData
. Isso é uma convenção comum de arquivos binários do R, mas não é obrigatório. Qualquer uma das extensões funciona em ambas as funções.
Para carregar os conjuntos de dados (ou de forma mais geral, os objetos) armazenados em formato binário, usamos a função load()
load("dados.rda")
load("workspace.RData")
Dessa forma, os objetos já estarão disponíveis na sua área de trabalho.
Informações sobre diretórios e arquivos
O R possui uma variedade de funções para mostrar informações sobre arquivos e diretórios. Alguns exemplos são:
file.info()
mostra o tamanho do arquivo, data de criação, …dir()
mostra todos os arquivos presentes em um diretório (tente comrecursive = TRUE
)file.exists()
retornaTRUE
ouFALSE
para a presença de um arquivogetwd()
esetwd()
para verificar e altear o diretório de trabalho
Veja ?files
para uma lista copleta de funções úteis para manipular arquivos de dentro do R.
Este conteúdo está disponível por meio da Licença Creative Commons 4.0