Neste tutorial de continuidade de This R Data Import Tutorial Is Everything You Need-Part One, a DataCamp segue com um guia completo e prático para importar dados no R rapidamente, indo de arquivos texto simples a formatos mais avançados como SPSS e SAS.
Como muitos leitores notaram no primeiro post, alguns ótimos pacotes para importar dados no R ainda não tinham sido abordados, e também não ficou clara a distinção entre trabalhar com conjuntos de dados padrão e conjuntos de dados grandes. Por isso, esse será o foco do post de hoje.
Siga a leitura para descobrir outras formas de importar seu arquivo específico no R e, se tiver dúvidas adicionais ou encontrar algum erro que devamos corrigir, fique à vontade para falar com a gente.
Primeiro, vamos nos aprofundar nas maneiras de trazer para o R dados de fontes comuns, geralmente em formato de planilha. Assim como no post anterior, o foco será em leitura de dados diferente de Excel ou outros tipos de arquivos.
Em seguida, falaremos de dados vindos de outros lugares, como softwares estatísticos, bancos de dados, web scraping, etc.
Se você quer saber mais sobre os passos prévios à importação, confira o nosso primeiro post, que explica como preparar seus dados e seu ambiente antes de trazê-los para o R.
Observação: seu arquivo também pode estar online. Nesse caso, basta passar a URL como primeiro argumento da função scan().
Alternativamente, você pode ler os dados em uma matriz:
data <- matrix(scan("birth.txt"),
nrow=2,
byrow=TRUE)
Tecnologia
Dica: para fazer isso de forma mais precisa, talvez você precise informar argumentos adicionais para deixar a matriz do jeito que precisa. Veja esta página para mais informações sobre a função matrix().
Você também pode ler as colunas do arquivo de entrada em vetores separados:
data <- scan("age.txt",
what = list(Age = 0,
Birthyear= 0),
skip=1,
quiet=TRUE)
Tecnologia
Note como primeiro você passa o arquivo (ou caminho) com sua extensão como argumento (dependendo se você definiu o diretório de trabalho para a pasta do dataset ou não) e depois especifica o tipo dos dados a serem lidos, se deseja pular a primeira linha do dataset, qual caractere delimita os campos e se quer imprimir uma linha informando quantos itens foram lidos.
Se seus dados tiverem tipos diferentes, ajuste a função scan(), como neste exemplo:
data <- scan("age.csv",
what = list(Age = 0,
Name= "",
Birthyear= 0),
skip=1,
sep=";",
quiet=TRUE)
Tecnologia
Dica: você pode testar! Baixe o arquivo usado acima aqui.
Depois, também dá para ler os dados em um data frame:
data <- data.frame(scan("age.csv",
what = list(Age = 0,
Name = "",
Birthyear= 0),
skip=1,
sep=";",
quiet=TRUE)
Tecnologia
Dica: muitos dos argumentos que scan() aceita são os mesmos de read.table(). Vale sempre consultar a documentação! Veja aqui os argumentos de scan().
Lembre-se de que você pode obter e definir o diretório de trabalho com os seguintes comandos, respectivamente:
Lendo dados de colunas de largura fixa no R com read.fwf()
Para ler uma tabela em formato de largura fixa em um data frame no R, use a função read.fwf() do pacote utils.
Você usa essa função quando seu arquivo tem colunas com espaços ou colunas sem separadores entre elas.
Phys / 00 / 1: M abadda
Math / 00 / 2: F bcdccb
Lang / 00 / 3: F abcdab
Chem / 00 / 4: M cdabaa
Tecnologia
Aqui você sabe, por exemplo, que o valor da disciplina está sempre nos 7 primeiros caracteres de cada linha, que o sexo sempre está na posição 22, e que as notas vão do caractere 25 ao 30.
Se quiser testar a carga desses dados no R, baixe o arquivo texto aqui.
Execute o seguinte comando para ler corretamente os dados acima no R:
Observação: o argumento widths informa as larguras dos campos. Neste caso, os sete primeiros caracteres ficam para o nome do curso; Em seguida, você não quer ler os 14 caracteres seguintes: passe -14. Depois, precisa de um caractere para o sexo, mas quer descartar os dois seguintes, então passe -2. Todos os caracteres restantes devem ser lidos em colunas separadas, então você os divide passando 1,1,1,1,1,1. Esses valores variam conforme as colunas que você precisa importar.
Há vários argumentos extras que você pode passar para read.fwf(). Clique aqui para saber mais.
Observação: se quiser carregar um arquivo usando especificações de formato ao estilo Fortran, use a função read.fortran():
Como você vê no exemplo acima, você usa especificações de formato Fortran como segundo argumento da função read.fortran(). Os argumentos seguem o estilo: “rFl.d”, “rDl.d”, “rXl”, “rAl” ou “rIl”, onde “l” é o número de colunas, “d” é o número de casas decimais e “r” é o número de repetições. Aqui aparecem 2.1, 2.0 e 2 via c(), o que significa três colunas com duas linhas. Na primeira coluna, valores com uma casa decimal; na segunda e na terceira, sem casas decimais.
Quanto aos tipos de valores das colunas, você tem:
“F” e “D” para formatos numéricos;
“A” para caracteres;
“I” para inteiros;
E “X” para indicar colunas que podem ser ignoradas.
Neste caso, a primeira e a segunda colunas têm formatos numéricos, enquanto a terceira é inteira.
Observação: os códigos de repetição “r” e de casas decimais “d” são opcionais. O comprimento “l” é obrigatório, exceto para formatos “X” quando “r” está presente.
Role a página para saber mais sobre como importar suas planilhas no R.
Importando planilhas do Excel no R
Além do pacote xlsx, há várias outras opções para ler planilhas no R:
1. Lendo planilhas do Excel no R a partir da área de transferência
Se você tem uma planilha aberta, pode copiar o conteúdo para a área de transferência e importar rapidamente no R. Para isso, use as funções readClipboard() ou read.table():
readClipboard() #Only on Windows
read.table(file="clipboard")`
Tecnologia
Como você verá ao testar, a primeira abordagem funciona bem para vetores, mas complica quando há dados tabulares na área de transferência. Se quiser saber mais sobre read.table(), volte à primeira parte do tutorial ou ao nosso guia sobre leitura e importação de arquivos Excel no R.
Observação: o argumento que você passa para odbcConnect() é um DSN. Para um guia completo de como configurar o DSN e a conexão, veja esta página, um tutorial extenso e acessível!
Depois de configurar a conexão, você pode usar a função sqlQuery() para buscar dados de planilhas .xls:
query <- "<SQL Query>"
data <- sqlQuery(connection,
query)
str(data)
Tecnologia
Super dica: acesse esta página, um tutorial extenso e acessível!
Ao final da sessão do R, não esqueça de fechar as conexões:
Deixe o navegador abrir e conclua a autenticação. Depois, para ler ou editar os dados, você precisa registrá-los. Faça isso especificando a planilha pelo título ou pela chave:
data <- gs_title("<your spreadsheet>")
data <- gs_key()
Tecnologia
Este é apenas um panorama do que fazer com googlesheets. Leia todos os detalhes aqui e confira também esta página.
Lendo arquivos DIF (Data Interchange Format) no R
Use a função read.DIF() para importar arquivos DIF no R:
data <- read.DIF("<your spreadsheet>",
header=FALSE,
as.is = !stringsAsFactors)
Tecnologia
Observação: você pode indicar se sua planilha tem cabeçalho e se quer importar os dados “como estão”, ou seja, se deseja converter variáveis de texto em fatores. Aqui, você não quis essa conversão e passou !stringsAsFactors.
Para mais informações sobre a função e seus argumentos, acesse esta página.
Importando arquivos do Excel no R
Além de planilhas, você pode querer trazer os próprios arquivos Excel para o R. Continue a leitura para ver como fazer isso!
Observação: é possível especificar a aba a ler, nomes e tipos de colunas, valores ausentes e o número de linhas a pular antes da leitura, com os argumentos sheet, col_names, col_types, na e skip, respectivamente. Saiba mais aqui.
Lendo arquivos Excel no R com openxlsx
O pacote openxlsx também oferece uma forma simples de ler arquivos .xlsx no R:
library(openxlsx)
read.xlsx("<path to your file>")
Tecnologia
Para mais detalhes sobre o pacote ou os argumentos de read.xlsx(), clique aqui.
Use a função read.ods() do pacote readODS para ler planilhas OpenDocument no R e colocá-las em data frames:
library(readODS)
read.ods("<path to your file>",
sheet = 1,
formulaAsFormula = FALSE)
Tecnologia
Observação: além do arquivo a importar, você pode indicar a aba desejada e escolher exibir fórmulas como fórmulas (por exemplo, “SUM(B1:B3)”) ou como valores resultantes.
Importando arquivos JSON (JavaScript Object Notation) no R
No nosso primeiro post sobre importação de dados no R, citamos o pacote rjson para ler arquivos JSON.
Mas há outros pacotes que você pode usar para importar JSON no R. Continue lendo para saber mais!
library(jsonlite)
data <- fromJSON("<Path to your JSON file>")
Tecnologia
Para um guia rápido e bem explicado de jsonlite, acesse aqui.
Importando JSON no R com o pacote RJSONIO
O terceiro pacote conhecido para JSON no R é o RJSONIO. Assim como nos pacotes jsonlite e jsonlite, você usa fromJSON():
library(RJSONIO)
data <- fromJSON("<Path to your JSON file")
Tecnologia
Qual é o melhor pacote para JSON?
Há muita discussão sobre isso. Para saber mais, confira:
esta página traz exemplos de código que ajudam a entender comportamento e performance de pacotes de JSON no R.
Leia também este post, que busca identificar qual pacote lida melhor com JSON no R.
Importando dados de softwares estatísticos no R
Se seus dados não são exatamente “formato planilha” e não estão em Excel ou JSON, talvez sejam de algum software estatístico.
Esta seção mostra mais formas de ler arquivos SPSS, Stata e SAS, além de um panorama sobre S-plus e Epi Info. Volte ao nosso primeiro post ou aos links abaixo para mais informações!
Importando arquivos SPSS no R
Em vez de usar o pacote foreign, você também pode recorrer ao pacote haven para trazer arquivos SPSS para o R.
Lembre-se de instalar e carregar o pacote antes de começar!
O haven oferece a função read_spss() para ler arquivos SPSS no R:
library(haven)
data <- read_spss("<path to your SPSS file>")
Tecnologia
Importando arquivos Stata no R
Assim como o pacote foreign, o haven também traz uma função para ler arquivos Stata no R, a read_dta():
data <- read_dta("<path to your STATA file>")
Tecnologia
Lembre-se de instalar os pacotes quando necessário e carregá-los no ambiente. Por exemplo, para instalar e carregar o haven:
library(SASxport)
data <- read.xport("<path to your SAS file>")
Tecnologia
3. Como importar arquivos SAS no R com o pacote haven
Assim como os pacotes foreign e sas7bdat, o haven também lê arquivos b7dat no R com a função read_sas():
library(haven)
data <- read_sas("<path to your SAS file>")
Tecnologia
Importando arquivos S-plus no R
Para datasets antigos de S-plus, produzidos no Windows versões 3.x, 4.x ou 2000, ou Unix 3.x com inteiros de 4 bytes, use a função read.S() do pacote foreign:
library(foreign)
data <- read.S("<Path to your file>")
Tecnologia
Lendo arquivos Epi Info no R
Como vimos no tutorial anterior (e neste), o pacote foreign oferece várias funções para ler formatos específicos no R, incluindo Epi Info. Use read.epiinfo() para importar:
library(foreign)
data <- read.epiinfo("<Path to your file>")
Tecnologia
Para mais informações sobre Epi Info, clique aqui.
Importando dados de outras fontes no R
Além das fontes comuns e dos softwares estatísticos, há muitas outras origens de dados para ler no R.
(Para quem não conhece: a empresa oferece dispositivos como rastreadores de atividade e outros gadgets que medem dados pessoais, como número de passos e qualidade do sono.)
Veja aqui um tutorial prático e curto de como usar o pacote fitbitScraper.
Importando dados do Quantmod no R
Você pode usar este pacote para extrair dados financeiros de fontes na Internet com R. A função para trazer dados é getSymbols(), como no exemplo:
library(quantmod)
data <- getSymbols("YHOO", src="google")
Tecnologia
Observação: primeiro você informa um vetor de caracteres com os símbolos a carregar. Aqui, "YHOO". Depois define a fonte. As opções disponíveis hoje incluem yahoo, google, MySQL, FRED, csv, RData e oanda.
Em seguida, defina os parâmetros de lookup e salve para sessões futuras:
Para mais informações sobre aplicações de finanças quantitativas no R, clique aqui ou acesse esta página para um tutorial detalhado para iniciantes no quantmod.
Importando arquivos ARFF no R
Dados em formato Attribute-Relation File Format (ARFF) do Weka podem ser lidos com a função read.arff():
library(foreign)
data <- read.arff("<Path to your file>")
Tecnologia
Por fim, para conectar ao SQL Server com RJDBC, veja este post ou acesse esta página para conectar a um banco Oracle. Observação: esta última página também traz outras opções para Oracle.
Observação: existe também o pacote de interface de bancos de dados DBI, que permite a comunicação entre o R e sistemas gerenciadores de bancos relacionais. Para mais informações, clique aqui.
Algumas explicações sobre como trabalhar com esse pacote podem ser encontradas aqui.
Importando arquivos binários no R
Arquivos binários armazenam informações em grupos de dígitos binários (0 e 1). Oito dígitos binários formam um byte. Você pode ler dados binários com a função readBin():
connection <- file("<path to your file>", "rb") #You open the connection as "reading binary"(rb)
data <- readBin(connection,
what="numeric") #Mode of the vector to be read
Tecnologia
Para um exemplo mais detalhado, veja esta página. Para mais informações sobre readBin(), clique aqui.
Lendo formatos binários no R
Os pacotes hdf5, h5r, rhdf5, RNetCDF, ncdf e ncdf4 oferecem interfaces para os arquivos HDF5 da NASA e netCDF da UCAR.
Se você quer tutoriais sobre HDF5 ou netCDF no R, veja:
Um excelente tutorial sobre HDF no R, também com o pacote pathfinder, está aqui;
Um tutorial introdutório e acessível sobre netCDF no R está nesta página.
Importando arquivos DBF no R
DBF (DataBase File) é o formato base do dBase. Você pode ler arquivos DBF com o pacote foreign, via função read.dbf():
library(foreign)
data <- read.dbf("<Path to your file>")
Tecnologia
Observação: no Windows, você também pode usar o pacote RODBC com a função odbcConnectDbase() para ler DBF via driver ODBC do dBase da Microsoft.
Importando tabelas de contingência “flat” no R
O pacote foreign permite ler múltiplos formatos; tabelas de contingência “flat” não são exceção. Use a função read.ftable() para isso:
library(foreign)
data <- read.ftable("<Path to your file>")
Tecnologia
Lembre-se de que tabelas de contingência “flat” são semelhantes às “normais”: elas contêm as contagens de cada combinação dos níveis das variáveis (fatores) envolvidas. A diferença é que a informação é rearranjada como uma matriz cujas linhas e colunas correspondem às combinações únicas dos níveis das variáveis de linha e coluna. Por isso, as tabelas “flat” são preferidas para representar tabelas de contingência de alta dimensão.
Lendo arquivos de SIG (GIS) no R
Você pode usar os pacotes rgdal e raster, entre outros, para importar arquivos GIS no R.
Se não sabe por onde começar com rgdal, confira este ótimo post, que introduz o trabalho com dados geoespaciais no R.
A importação de conjuntos de dados grandes costuma gerar debate entre usuários de R. Além dos pacotes para conexão com bancos, há outros que se destacam ao lidar com big data.
Importando grandes volumes de dados no R com o pacote data.table
Conhecido como “fast and friendly file finagler”, o popular pacote data.table é extremamente útil e fácil de usar. Sua função fread() importa dados de arquivos delimitados regulares direto no R, sem rodeios.
Observação: “regular” aqui significa que todas as linhas têm o mesmo número de colunas. Exemplo:
V1 V2 V3
1 1 6 a
2 2 7 b
3 3 8 c
4 4 9 d
5 5 10 e
Tecnologia
Um dos pontos fortes é que controles como sep, colClasses e nrows são detectados automaticamente. Tipos bit64::integer64 também são identificados e lidos diretamente, sem precisar ler como texto para depois converter.
Lembre-se: tipos bit64::integer64 são inteiros de 64 bits. Por padrão, inteiros são 32 bits. Como o tipo é detectado, o sistema já sabe que é número e não precisa ler como caractere para converter.
Exemplo de fread():
library(data.table)
data <- fread("http://assets.datacamp.com/blog_assets/chol.txt")
data
Tecnologia
## AGE HEIGHT WEIGHT CHOL SMOKE BLOOD MORT
## 1: 20 176 77 195 nonsmo b alive
## 2: 53 167 56 250 sigare o dead
## 3: 44 170 80 304 sigare a dead
## 4: 37 173 89 178 nonsmo o alive
## 5: 26 170 71 206 sigare o alive
## ---
## 196: 35 174 57 222 pipe a alive
## 197: 38 172 91 227 nonsmo b alive
## 198: 26 170 60 167 sigare a alive
## 199: 39 165 74 259 sigare o alive
## 200: 49 178 81 275 pipe b alive
Tecnologia
Observação: ler com fread() retorna um data.table:
Isso difere de read.table(), que cria um data frame.
Você encontra mais diferenças entre data frames e data.tables aqui. Em resumo: todo data.table também é um data.frame. Um data.table pode ser passado para qualquer pacote que aceite data.frame e esse pacote pode usar a sintaxe [.data.frame no data.table. Leia mais aqui.
Observação: a entrada também pode ser um arquivo local, não precisa ser uma URL. E note como muitos argumentos são iguais aos de read.table(), por exemplo.
Importando grandes volumes de dados no R com o pacote ff
O pacote ff oferece “armazenamento eficiente em disco para dados grandes e funções de acesso rápido”. Ele aparece com frequência em discussões sobre leitura de big data como data frames, como aqui.
Para importar arquivos texto separados em ff data frames, use read.table.ffdf(), read.csv.ffdf(), read.csv2.ffdf(), read.delim.ffdf() ou read.delim2.ffdf(), de forma semelhante à read.table() e suas variações, descritas em um post anterior:
bigdata <- read.table.ffdf(file="<Path to file>",
nrows=n)
Tecnologia
Observação: o primeiro argumento pode ser NULL (como aqui) ou um objeto ffdf opcional ao qual os registros lidos serão anexados. Para saber mais, veja aqui. Depois, informe o arquivo com o argumento file. Você também pode limitar o número máximo de linhas com nrows (assim como em read.table()!).
Você pode ir além e especificar codificação do arquivo, níveis ou o nome de uma função chamada para ler cada bloco:
Dica: mais argumentos para read.table.ffdf(), read.csv.ffdf(), read.csv2.ffdf(), read.delim.ffdf() ou read.delim2.ffdf() estão aqui.
Importando grandes volumes de dados no R com bigmemory
Outro pacote que aparece bastante em buscas sobre grandes volumes de dados no R é o bigmemory. Ele permite “gerenciar matrizes massivas com memória compartilhada e arquivos mapeados em memória”.
Como de praxe, você informa o nome do arquivo e depois define separador, cabeçalho e número de linhas a pular antes da leitura com os argumentos sep, header e skip, respectivamente.
Observação: estes são só alguns exemplos! Há muitos outros argumentos em read.big.matrix()! Consulte a documentação para saber mais.
Lendo grandes volumes de dados no R com o pacote sqldf
O pacote sqldf também é uma opção quando você trabalha com dados grandes. Ele permite “executar selects SQL no R”, e a função read.csv.sql() é especialmente útil quando você quer ler um arquivo aplicando um filtro SQL. Assim, apenas parte dos dados é processada pelo R:
library(sqldf)
bigdata <- read.csv.sql(file="<Path to your file>",
sql="select * from file where ...",
colClasses=c("character",
rep("numeric",10)))
Tecnologia
Observação: o exemplo acima é semelhante a outras funções para importar dados grandes, com a diferença de que o segundo argumento passado para read.csv.sql() é uma instrução SQL. As tabelas às quais você se refere na query fazem parte do arquivo informado no argumento file de read.csv.sql().
Dica: para mais informações sobre o uso de sqldf, veja um vídeo tutorial aqui ou um resumo escrito aqui.
Importando grandes volumes de dados no R com a função read.table()
Você pode usar a função “padrão” read.table() para importar seus dados, mas ela provavelmente será mais lenta do que pacotes feitos para big data. Para ver o funcionamento de read.table(), volte ao nosso primeiro post.
Para ganhar velocidade, você pode “tuná-la” adicionando argumentos à função, assim:
primeiro você passa o arquivo (ou caminho), dependendo do seu diretório de trabalho;
depois, usa header para indicar se a primeira linha contém os nomes das variáveis. No exemplo, não;
o separador é definido como / com sep; isso quer dizer que os valores em cada linha são separados por esse caractere;
em seguida, você pode desabilitar/abilitar aspas. Aqui, quote="" desabilita;
você define que a string “EMPTY” deve ser interpretada como NA;
também define as classes das colunas: a primeira é caractere, a segunda numérica e a última fator;
com strip.white você remove espaços em branco iniciais/finais de campos de caractere não citados; só se aplica quando sep é usado!
com comment.char="" você desliga a interpretação de comentários;
você não quer converter caracteres em fatores! Por isso definiu colClasses e confirmou com stringsAsFactors=FALSE. Dica: este argumento, junto com colClasses e comment.char, é dos mais importantes para uma importação suave!
Importando grandes volumes de dados no R com o pacote readr
Uma das opções mais rápidas para importar dados grandes no R é o pacote readr, que lê dados tabulares de texto, assim como read.table. Porém, o readr traz “funções de substituição que oferecem funcionalidades adicionais e são muito mais rápidas” (veja aqui).
df <- read_table("<Path to your file>",
col_names=TRUE)
Tecnologia
Observação: o readr também oferece read_csv(), read_csv2(), read_delim(), read_fwf(), read_tsv() e outras funções mais rápidas do que as originais! Detalhes aqui.
Para mais dicas sobre big data no R, vale ver esta discussão no StackOverflow, que fala de pacotes e também de boas práticas como armazenar dados em formatos binários e usar saveRDS/readRDS ou o pacote rhdf5 para o formato HDF5.
Observação: esse último formato foi citado acima e há muitos outros pacotes além dos que cobrimos. Por exemplo, pacotes de conexão com bancos, como RODBC e MonetDB.R, também ajudam a lidar com dados maiores; e o pacote dplyr é muito útil quando você quer trabalhar diretamente com dados armazenados em diferentes bancos.
Dica: interessado em manipulação de dados no R? Então nosso curso interativo de dplyr pode ser para você! Com a orientação de Garrett Grolemund, você vai aprender a realizar tarefas avançadas de manipulação com dplyr.
Confira também este post, que testa a performance de carga de alguns dos pacotes listados!
Importando seus dados no R com o pacote rio
Este “canivete suíço para Entrada/Saída de dados” facilita a vida na hora de importar e exportar dados no R! Você pode ler e gravar dados de quase qualquer formato: ao instalar o pacote rio, você reúne vários pacotes de leitura em um só. Para importar ou exportar, basta lembrar duas funções: import() e export(). O rio usa os pacotes específicos para inferir a estrutura pelo tipo de arquivo, ler fontes web nativamente e definir padrões razoáveis de importação/exportação.
Em resumo, o rio suporta um conjunto amplo de formatos populares, tanto para import quanto para export.
Neste tutorial de continuidade de This R Data Import Tutorial Is Everything You Need-Part One, a DataCamp segue com um guia completo e prático para importar dados no R rapidamente, indo de arquivos texto simples a formatos mais avançados como SPSS e SAS.
Como muitos leitores notaram no primeiro post, alguns ótimos pacotes para importar dados no R ainda não tinham sido abordados, e também não ficou clara a distinção entre trabalhar com conjuntos de dados padrão e conjuntos de dados grandes. Por isso, esse será o foco do post de hoje.
Siga a leitura para descobrir outras formas de importar seu arquivo específico no R e, se tiver dúvidas adicionais ou encontrar algum erro que devamos corrigir, fique à vontade para falar com a gente.
(Experimente este curso interativo: Importing Data in R (Part 1) para trabalhar com arquivos CSV e Excel no R.)
Colocando dados de fontes comuns no R
Primeiro, vamos nos aprofundar nas maneiras de trazer para o R dados de fontes comuns, geralmente em formato de planilha. Assim como no post anterior, o foco será em leitura de dados diferente de Excel ou outros tipos de arquivos.
Em seguida, falaremos de dados vindos de outros lugares, como softwares estatísticos, bancos de dados, web scraping, etc.
Se você quer saber mais sobre os passos prévios à importação, confira o nosso primeiro post, que explica como preparar seus dados e seu ambiente antes de trazê-los para o R.
Lendo arquivos texto simples no R com
scan()Além da
read.table(), mencionada no primeiro post do tutorial, a funçãoscan()também ajuda a lidar com dados armazenados em arquivos texto delimitados simples. Diferente deread.table(), ascan()retorna uma lista ou um vetor, e não um data frame.Suponha que você tenha o seguinte arquivo
.txt:Você pode ler os dados (disponível para download aqui) com o comando:
Observação: seu arquivo também pode estar online. Nesse caso, basta passar a URL como primeiro argumento da função
scan().Alternativamente, você pode ler os dados em uma matriz:
Dica: para fazer isso de forma mais precisa, talvez você precise informar argumentos adicionais para deixar a matriz do jeito que precisa. Veja esta página para mais informações sobre a função
matrix().Você também pode ler as colunas do arquivo de entrada em vetores separados:
Note como primeiro você passa o arquivo (ou caminho) com sua extensão como argumento (dependendo se você definiu o diretório de trabalho para a pasta do dataset ou não) e depois especifica o tipo dos dados a serem lidos, se deseja pular a primeira linha do dataset, qual caractere delimita os campos e se quer imprimir uma linha informando quantos itens foram lidos.
Se seus dados tiverem tipos diferentes, ajuste a função
scan(), como neste exemplo:Dica: você pode testar! Baixe o arquivo usado acima aqui.
Depois, também dá para ler os dados em um data frame:
Dica: muitos dos argumentos que
scan()aceita são os mesmos deread.table(). Vale sempre consultar a documentação! Veja aqui os argumentos descan().Lembre-se de que você pode obter e definir o diretório de trabalho com os seguintes comandos, respectivamente:
Lendo dados de colunas de largura fixa no R com
read.fwf()Para ler uma tabela em formato de largura fixa em um data frame no R, use a função
read.fwf()do pacoteutils.Você usa essa função quando seu arquivo tem colunas com espaços ou colunas sem separadores entre elas.
Aqui você sabe, por exemplo, que o valor da disciplina está sempre nos 7 primeiros caracteres de cada linha, que o sexo sempre está na posição 22, e que as notas vão do caractere 25 ao 30.
Se quiser testar a carga desses dados no R, baixe o arquivo texto aqui.
Execute o seguinte comando para ler corretamente os dados acima no R:
Observação: o argumento
widthsinforma as larguras dos campos. Neste caso, os sete primeiros caracteres ficam para o nome do curso; Em seguida, você não quer ler os 14 caracteres seguintes: passe-14. Depois, precisa de um caractere para o sexo, mas quer descartar os dois seguintes, então passe-2. Todos os caracteres restantes devem ser lidos em colunas separadas, então você os divide passando1,1,1,1,1,1. Esses valores variam conforme as colunas que você precisa importar.Há vários argumentos extras que você pode passar para
read.fwf(). Clique aqui para saber mais.Observação: se quiser carregar um arquivo usando especificações de formato ao estilo Fortran, use a função
read.fortran():Como você vê no exemplo acima, você usa especificações de formato Fortran como segundo argumento da função
read.fortran(). Os argumentos seguem o estilo: “rFl.d”, “rDl.d”, “rXl”, “rAl” ou “rIl”, onde “l” é o número de colunas, “d” é o número de casas decimais e “r” é o número de repetições. Aqui aparecem2.1,2.0e2viac(), o que significa três colunas com duas linhas. Na primeira coluna, valores com uma casa decimal; na segunda e na terceira, sem casas decimais.Quanto aos tipos de valores das colunas, você tem:
Neste caso, a primeira e a segunda colunas têm formatos numéricos, enquanto a terceira é inteira.
Observação: os códigos de repetição “r” e de casas decimais “d” são opcionais. O comprimento “l” é obrigatório, exceto para formatos “X” quando “r” está presente.
Levando suas planilhas (Google) para o R
Planilhas podem ser importadas no R de várias formas, como você já deve ter visto no nosso tutorial sobre como ler e importar arquivos do Excel no R ou no primeiro post This R Data Import Tutorial Is Everything You Need. Esta seção amplia esse tema e vai além, incluindo planilhas do Google e arquivos DIF!
Role a página para saber mais sobre como importar suas planilhas no R.
Importando planilhas do Excel no R
Além do pacote
xlsx, há várias outras opções para ler planilhas no R:1. Lendo planilhas do Excel no R a partir da área de transferência
Se você tem uma planilha aberta, pode copiar o conteúdo para a área de transferência e importar rapidamente no R. Para isso, use as funções
readClipboard()ouread.table():Como você verá ao testar, a primeira abordagem funciona bem para vetores, mas complica quando há dados tabulares na área de transferência. Se quiser saber mais sobre
read.table(), volte à primeira parte do tutorial ou ao nosso guia sobre leitura e importação de arquivos Excel no R.2. Lendo planilhas do Excel no R via pacote RODBC
A segunda forma é por meio do pacote
RODBC:Observação: o argumento que você passa para
odbcConnect()é um DSN. Para um guia completo de como configurar o DSN e a conexão, veja esta página, um tutorial extenso e acessível!sqlQuery()para buscar dados de planilhas.xls:Super dica: acesse esta página, um tutorial extenso e acessível!
Ao final da sessão do R, não esqueça de fechar as conexões:
Dica: para saber mais sobre importação de planilhas ou arquivos Excel no R, volte ao nosso primeiro tutorial sobre importação de dados no R ou leia nosso guia sobre leitura e importação de arquivos Excel no R, que aborda os pacotes
readxleXLConnect, entre outros.Importando planilhas do Google no R
O pacote
googlesheetscom a funçãogs_read()permite ler planilhas do Google no R.Comece executando:
Deixe o navegador abrir e conclua a autenticação. Depois, para ler ou editar os dados, você precisa registrá-los. Faça isso especificando a planilha pelo título ou pela chave:
Em seguida, leia os dados:
Este é apenas um panorama do que fazer com
googlesheets. Leia todos os detalhes aqui e confira também esta página.Lendo arquivos DIF (Data Interchange Format) no R
Use a função
read.DIF()para importar arquivos DIF no R:Observação: você pode indicar se sua planilha tem cabeçalho e se quer importar os dados “como estão”, ou seja, se deseja converter variáveis de texto em fatores. Aqui, você não quis essa conversão e passou
!stringsAsFactors.Para mais informações sobre a função e seus argumentos, acesse esta página.
Importando arquivos do Excel no R
Além de planilhas, você pode querer trazer os próprios arquivos Excel para o R. Continue a leitura para ver como fazer isso!
Observação: este post aprofunda o conteúdo do nosso tutorial sobre leitura e importação de arquivos Excel no R e do primeiro post This R Data Import Tutorial Is Everything You Need!
Importando arquivos Excel no R com
readxlEmbora o pacote ainda esteja em desenvolvimento ativo, vale muito a pena conferir, pois oferece uma forma bem simples de ler arquivos Excel:
Lembre-se: você pode apenas digitar o nome do arquivo com a extensão se ele estiver no seu diretório de trabalho. Obtenha e defina o diretório com:
Observação: é possível especificar a aba a ler, nomes e tipos de colunas, valores ausentes e o número de linhas a pular antes da leitura, com os argumentos
sheet,col_names,col_types,naeskip, respectivamente. Saiba mais aqui.Lendo arquivos Excel no R com
openxlsxO pacote openxlsx também oferece uma forma simples de ler arquivos
.xlsxno R:Para mais detalhes sobre o pacote ou os argumentos de
read.xlsx(), clique aqui.Dica: para saber mais sobre a importação de arquivos Excel no R, volte ao nosso primeiro tutorial sobre “importação de dados no R” ou leia o nosso guia completo sobre leitura e importação de arquivos Excel no R, que também cobre o pacote
XLConnect, entre outros.Importando planilhas OpenDocument no R
Use a função
read.ods()do pacotereadODSpara ler planilhas OpenDocument no R e colocá-las em data frames:Observação: além do arquivo a importar, você pode indicar a aba desejada e escolher exibir fórmulas como fórmulas (por exemplo, “SUM(B1:B3)”) ou como valores resultantes.
Importando arquivos JSON (JavaScript Object Notation) no R
No nosso primeiro post sobre importação de dados no R, citamos o pacote
rjsonpara ler arquivos JSON.Mas há outros pacotes que você pode usar para importar JSON no R. Continue lendo para saber mais!
Importando JSON no R com o pacote
jsonliteRecentemente entre os 25 mais baixados de R packages, com 66.952 downloads, o pacote
jsonliteé um dos queridinhos dos usuários de R.Você importa JSON com a função
fromJSON():Para um guia rápido e bem explicado de
jsonlite, acesse aqui.Importando JSON no R com o pacote
RJSONIOO terceiro pacote conhecido para JSON no R é o
RJSONIO. Assim como nos pacotesjsonliteejsonlite, você usafromJSON():Qual é o melhor pacote para JSON?
Há muita discussão sobre isso. Para saber mais, confira:
Importando dados de softwares estatísticos no R
Se seus dados não são exatamente “formato planilha” e não estão em Excel ou JSON, talvez sejam de algum software estatístico.
Esta seção mostra mais formas de ler arquivos SPSS, Stata e SAS, além de um panorama sobre S-plus e Epi Info. Volte ao nosso primeiro post ou aos links abaixo para mais informações!
Importando arquivos SPSS no R
Em vez de usar o pacote foreign, você também pode recorrer ao pacote
havenpara trazer arquivos SPSS para o R.Lembre-se de instalar e carregar o pacote antes de começar!
O
havenoferece a funçãoread_spss()para ler arquivos SPSS no R:Importando arquivos Stata no R
Assim como o pacote foreign, o
haventambém traz uma função para ler arquivos Stata no R, aread_dta():Lembre-se de instalar os pacotes quando necessário e carregá-los no ambiente. Por exemplo, para instalar e carregar o
haven:Importando arquivos SAS no R
Como o pacote
sas7bdatfoi citado no último post, aqui vamos focar em outras maneiras de ler SAS:1. Como importar arquivos SAS XPORT no R com o pacote
foreignO pacote foreign com a função
read.xport()também permite importar arquivos SAS XPORT:2. Como importar arquivos SAS XPORT no R com o pacote
SASxportO pacote
sasXPORTtambém lê arquivos SAS XPORT pela funçãoread.xport():3. Como importar arquivos SAS no R com o pacote
havenAssim como os pacotes
foreignesas7bdat, ohaventambém lê arquivos b7dat no R com a funçãoread_sas():Importando arquivos S-plus no R
Para datasets antigos de S-plus, produzidos no Windows versões 3.x, 4.x ou 2000, ou Unix 3.x com inteiros de 4 bytes, use a função
read.S()do pacoteforeign:Lendo arquivos Epi Info no R
Como vimos no tutorial anterior (e neste), o pacote
foreignoferece várias funções para ler formatos específicos no R, incluindo Epi Info. Useread.epiinfo()para importar:Para mais informações sobre Epi Info, clique aqui.
Importando dados de outras fontes no R
Além das fontes comuns e dos softwares estatísticos, há muitas outras origens de dados para ler no R.
Veja algumas abaixo. Continue a leitura!
Importando arquivos MATLAB no R
Use o pacote
R.matlabcom a funçãoreadMat()para importar arquivos do MATLAB no R.Você pode passar uma string como primeiro argumento (interpretada como nome do arquivo) ou um vetor bruto (conexão binária):
A função
readMat()retorna uma lista nomeada com todas as variáveis do arquivo MAT importado.Lendo arquivos Octave no R
O pacote
foreignaparece de novo! Useread.octave()para importar dados texto do Octave no R:Importando dados do FitbitScraper no R
Você pode usar o pacote
fitbitScraperpara obter dados do fitbit.(Para quem não conhece: a empresa oferece dispositivos como rastreadores de atividade e outros gadgets que medem dados pessoais, como número de passos e qualidade do sono.)
Veja aqui um tutorial prático e curto de como usar o pacote
fitbitScraper.Importando dados do Quantmod no R
Você pode usar este pacote para extrair dados financeiros de fontes na Internet com R. A função para trazer dados é
getSymbols(), como no exemplo:Observação: primeiro você informa um vetor de caracteres com os símbolos a carregar. Aqui,
"YHOO". Depois define a fonte. As opções disponíveis hoje incluem yahoo, google, MySQL, FRED, csv, RData e oanda.Em seguida, defina os parâmetros de lookup e salve para sessões futuras:
Em novas sessões, chame
Para mais informações sobre aplicações de finanças quantitativas no R, clique aqui ou acesse esta página para um tutorial detalhado para iniciantes no quantmod.
Importando arquivos ARFF no R
Dados em formato Attribute-Relation File Format (ARFF) do Weka podem ser lidos com a função
read.arff():Para mais informações, visite esta página.
Observação: o pacote
RWekatambém oferece a mesma função para importar ARFF. Saiba mais aqui!Importando dados de bancos de dados no R
Além de
MonetDB.R,rmongodbeRMySQL, cobertos no post anterior, você tem outros pacotes para conectar bancos de dados no R.você também tem
mongolite,RMongo,RODBC,ROracle,RPostgreSQL,RSQLite,RJDBC.Para tutoriais sobre esses pacotes, confira:
mongolite, este tutorial pode ajudar;RMongo, veja este post;RODBCé amplamente discutido também neste tutorial. Para uma descrição mais curta do método, vá aqui;ROracle, confira esta apresentação;RPostgreSQL, vá aqui ou aqui;RSQLite;RJDBC, veja este post ou acesse esta página para conectar a um banco Oracle. Observação: esta última página também traz outras opções para Oracle.Observação: existe também o pacote de interface de bancos de dados
DBI, que permite a comunicação entre o R e sistemas gerenciadores de bancos relacionais. Para mais informações, clique aqui.Algumas explicações sobre como trabalhar com esse pacote podem ser encontradas aqui.
Importando arquivos binários no R
Arquivos binários armazenam informações em grupos de dígitos binários (0 e 1). Oito dígitos binários formam um byte. Você pode ler dados binários com a função
readBin():Para um exemplo mais detalhado, veja esta página. Para mais informações sobre
readBin(), clique aqui.Lendo formatos binários no R
Os pacotes
hdf5,h5r,rhdf5,RNetCDF,ncdfencdf4oferecem interfaces para os arquivos HDF5 da NASA e netCDF da UCAR.Se você quer tutoriais sobre HDF5 ou netCDF no R, veja:
Importando arquivos DBF no R
DBF (DataBase File) é o formato base do dBase. Você pode ler arquivos DBF com o pacote
foreign, via funçãoread.dbf():Observação: no Windows, você também pode usar o pacote
RODBCcom a funçãoodbcConnectDbase()para ler DBF via driver ODBC do dBase da Microsoft.Importando tabelas de contingência “flat” no R
O pacote
foreignpermite ler múltiplos formatos; tabelas de contingência “flat” não são exceção. Use a funçãoread.ftable()para isso:Lembre-se de que tabelas de contingência “flat” são semelhantes às “normais”: elas contêm as contagens de cada combinação dos níveis das variáveis (fatores) envolvidas. A diferença é que a informação é rearranjada como uma matriz cujas linhas e colunas correspondem às combinações únicas dos níveis das variáveis de linha e coluna. Por isso, as tabelas “flat” são preferidas para representar tabelas de contingência de alta dimensão.
Lendo arquivos de SIG (GIS) no R
Você pode usar os pacotes
rgdaleraster, entre outros, para importar arquivos GIS no R.Se não sabe por onde começar com
rgdal, confira este ótimo post, que introduz o trabalho com dados geoespaciais no R.Você também pode ver este tutorial, que usa
rgdaleraster.Importando tabelas do ITIS (Integrated Taxonomical Information) no R
Você pode importar tabelas do ITIS com a função
read.table():Para mais informações sobre o ITIS, clique aqui.
Importando conjuntos de dados grandes no R
A importação de conjuntos de dados grandes costuma gerar debate entre usuários de R. Além dos pacotes para conexão com bancos, há outros que se destacam ao lidar com big data.
Importando grandes volumes de dados no R com o pacote
data.tableConhecido como “fast and friendly file finagler”, o popular pacote
data.tableé extremamente útil e fácil de usar. Sua funçãofread()importa dados de arquivos delimitados regulares direto no R, sem rodeios.Observação: “regular” aqui significa que todas as linhas têm o mesmo número de colunas. Exemplo:
Um dos pontos fortes é que controles como
sep,colClassesenrowssão detectados automaticamente. Tiposbit64::integer64também são identificados e lidos diretamente, sem precisar ler como texto para depois converter.Lembre-se: tipos
bit64::integer64são inteiros de 64 bits. Por padrão, inteiros são 32 bits. Como o tipo é detectado, o sistema já sabe que é número e não precisa ler como caractere para converter.Exemplo de
fread():Observação: ler com
fread()retorna um data.table:Isso difere de
read.table(), que cria um data frame.Você encontra mais diferenças entre data frames e data.tables aqui. Em resumo: todo data.table também é um data.frame. Um data.table pode ser passado para qualquer pacote que aceite data.frame e esse pacote pode usar a sintaxe [.data.frame no data.table. Leia mais aqui.
Observação: a entrada também pode ser um arquivo local, não precisa ser uma URL. E note como muitos argumentos são iguais aos de
read.table(), por exemplo.Dica: quer saber mais sobre data.table? Nosso curso Data Analysis In R, The data.table Way pode te interessar! Com a orientação de Matt Dowle e Arun Srinivasan, você vai do básico ao avançado em pouco tempo.
Importando grandes volumes de dados no R com o pacote
ffO pacote
ffoferece “armazenamento eficiente em disco para dados grandes e funções de acesso rápido”. Ele aparece com frequência em discussões sobre leitura de big data como data frames, como aqui.Para importar arquivos texto separados em ff data frames, use
read.table.ffdf(),read.csv.ffdf(),read.csv2.ffdf(),read.delim.ffdf()ouread.delim2.ffdf(), de forma semelhante àread.table()e suas variações, descritas em um post anterior:Observação: o primeiro argumento pode ser
NULL(como aqui) ou um objetoffdfopcional ao qual os registros lidos serão anexados. Para saber mais, veja aqui. Depois, informe o arquivo com o argumentofile. Você também pode limitar o número máximo de linhas comnrows(assim como emread.table()!).Você pode ir além e especificar codificação do arquivo, níveis ou o nome de uma função chamada para ler cada bloco:
Dica: mais argumentos para
read.table.ffdf(),read.csv.ffdf(),read.csv2.ffdf(),read.delim.ffdf()ouread.delim2.ffdf()estão aqui.Importando grandes volumes de dados no R com
bigmemoryOutro pacote que aparece bastante em buscas sobre grandes volumes de dados no R é o
bigmemory. Ele permite “gerenciar matrizes massivas com memória compartilhada e arquivos mapeados em memória”.Observação: você não pode usar este pacote no Windows: não há binários para Windows.
Como de praxe, você informa o nome do arquivo e depois define separador, cabeçalho e número de linhas a pular antes da leitura com os argumentos
sep,headereskip, respectivamente.Observação: estes são só alguns exemplos! Há muitos outros argumentos em
read.big.matrix()! Consulte a documentação para saber mais.Lendo grandes volumes de dados no R com o pacote
sqldfO pacote
sqldftambém é uma opção quando você trabalha com dados grandes. Ele permite “executar selects SQL no R”, e a funçãoread.csv.sql()é especialmente útil quando você quer ler um arquivo aplicando um filtro SQL. Assim, apenas parte dos dados é processada pelo R:Observação: o exemplo acima é semelhante a outras funções para importar dados grandes, com a diferença de que o segundo argumento passado para
read.csv.sql()é uma instrução SQL. As tabelas às quais você se refere na query fazem parte do arquivo informado no argumentofilederead.csv.sql().Dica: para mais informações sobre o uso de
sqldf, veja um vídeo tutorial aqui ou um resumo escrito aqui.Importando grandes volumes de dados no R com a função
read.table()Você pode usar a função “padrão”
read.table()para importar seus dados, mas ela provavelmente será mais lenta do que pacotes feitos para big data. Para ver o funcionamento deread.table(), volte ao nosso primeiro post.Para ganhar velocidade, você pode “tuná-la” adicionando argumentos à função, assim:
Observação:
headerpara indicar se a primeira linha contém os nomes das variáveis. No exemplo, não;/comsep; isso quer dizer que os valores em cada linha são separados por esse caractere;quote=""desabilita;strip.whitevocê remove espaços em branco iniciais/finais de campos de caractere não citados; só se aplica quandosepé usado!comment.char=""você desliga a interpretação de comentários;colClassese confirmou comstringsAsFactors=FALSE.Dica: este argumento, junto com
colClassesecomment.char, é dos mais importantes para uma importação suave!Dica: para mais detalhes sobre todos os argumentos de
read.table(), leia nosso post sobre leitura de arquivos Excel no R.Importando grandes volumes de dados no R com o pacote
readrUma das opções mais rápidas para importar dados grandes no R é o pacote
readr, que lê dados tabulares de texto, assim comoread.table. Porém, oreadrtraz “funções de substituição que oferecem funcionalidades adicionais e são muito mais rápidas” (veja aqui).Observação: o
readrtambém ofereceread_csv(),read_csv2(),read_delim(),read_fwf(),read_tsv()e outras funções mais rápidas do que as originais! Detalhes aqui.Dica: mais informações neste repositório no GitHub.
Algumas observações sobre big data no R
Para mais dicas sobre big data no R, vale ver esta discussão no StackOverflow, que fala de pacotes e também de boas práticas como armazenar dados em formatos binários e usar
saveRDS/readRDSou o pacoterhdf5para o formato HDF5.Observação: esse último formato foi citado acima e há muitos outros pacotes além dos que cobrimos. Por exemplo, pacotes de conexão com bancos, como
RODBCeMonetDB.R, também ajudam a lidar com dados maiores; e o pacotedplyré muito útil quando você quer trabalhar diretamente com dados armazenados em diferentes bancos.Dica: interessado em manipulação de dados no R? Então nosso curso interativo de
dplyrpode ser para você! Com a orientação de Garrett Grolemund, você vai aprender a realizar tarefas avançadas de manipulação comdplyr.Confira também este post, que testa a performance de carga de alguns dos pacotes listados!
Importando seus dados no R com o pacote
rioEste “canivete suíço para Entrada/Saída de dados” facilita a vida na hora de importar e exportar dados no R! Você pode ler e gravar dados de quase qualquer formato: ao instalar o pacote
rio, você reúne vários pacotes de leitura em um só. Para importar ou exportar, basta lembrar duas funções:import()eexport(). Oriousa os pacotes específicos para inferir a estrutura pelo tipo de arquivo, ler fontes web nativamente e definir padrões razoáveis de importação/exportação.Em resumo, o
riosuporta um conjunto amplo de formatos populares, tanto para import quanto para export.A importação com o
rioacontece assim:Para ver exatamente quais formatos o
riosuporta, visite esta página.Para fechar
Se você quer aprender mais sobre como trabalhar com big data no R, confira os cursos How To Work With Quandl in R e “Big Data Analysis With Revolution R Enterprise” na DataCamp!