R Básico – Importação de Dados para o R

English version of this post / Versão em inglês deste post

Introdução

Hoje falaremos de importação de dados para o R. Existem diversas formas para
importar os mais variados tipos de dados para que possamos usar o R e fazer
todas as análises que desejamos. Alguns dos formatos mais utilizados são:

  • CSV (Comma separated values)
  • Dados em tabela, usando outros separadores que não a vírgula
  • Dados espaçados por TAB
  • Arquivos Xls (Excel)
  • Linhas de arquivo de texto
  • HTML, XML, Json
  • E muitos outros (HDF5, SPSS, Stata)

Vamos começar.

Arquivos CSV e outros em formato de tabela

O CSV, ou Comma Separated Value, é um dos formatos mais utilizados para
armazenar informações em formato de tabela. Neste formato, basicamente, a
vírgula indica a passagem para a próxima coluna. A tabela pode ter um cabeçalho
(header) com os nomes das colunas ou não.

Vamos utilizar um CSV com informaçoes sobre passageiros de linhas aéreas. Você
pode baixa-lo clicando aqui.

Depois disso, vamos importar este CSV para um data frame no R usando a função
read.csv. Vejamos:

airline_dataframe <- read.csv("AirPassengers.csv", header=TRUE)
head(airline_dataframe)
##   X     time AirPassengers
## 1 1 1949.000           112
## 2 2 1949.083           118
## 3 3 1949.167           132
## 4 4 1949.250           129
## 5 5 1949.333           121
## 6 6 1949.417           135

Utilizamos a função com header=TRUE pois neste CSV, a primeira linha indica o
nome das colunas, ou seja, é seu cabeçalho, seu header. Caso utilizassemos
header=FALSE, os valores constantes na primeira linha não seriam os nomes das
colunas, mas sim itens do próprio data frame. O R daria nomes genéricos para as
colunas neste caso. Também podemos usar o read.table, para ler arquivos em
formato de tabela, inclusive CSVs, bastando definir o separado utilizado no
arquivo através do argumento sep. O separador deve estar entre aspas:

airline_dataframe <- read.table("AirPassengers.csv", header=TRUE, sep=",")
head(airline_dataframe)
##   X     time AirPassengers
## 1 1 1949.000           112
## 2 2 1949.083           118
## 3 3 1949.167           132
## 4 4 1949.250           129
## 5 5 1949.333           121
## 6 6 1949.417           135

Agora outro exemplo, onde o separador é o TAB e o arquivo é um txt. Você pode
baixar o arquivo clicando aqui :

test_dataframe <- read.table("test.txt", header=TRUE, sep="\t")
head(test_dataframe)
##    X t1 t2 t3 t4 t5 t6 t7 t8
## 1 r1  1  0  1  0  0  1  0  2
## 2 r2  1  2  2  1  2  1  2  1
## 3 r3  0  0  0  2  1  1  0  1
## 4 r4  0  0  1  1  2  0  0  0
## 5 r5  0  2  1  1  1  0  0  0
## 6 r6  2  2  0  1  1  1  0  0

Em alguns casos, o arquivo onde estão as informações possui em suas primeiras
linhas instruções para utilização. Nestes casos, você pode usar o argumento skip
para indicar quantas linhas devem ser puladas. Vamos usar o mesmo arquivo do
último exemplo, mas editei-o para incluir algumas linhas de texto no início.
Baixe o arquivo atualizado aqui: clique aqui para baixar

test_dataframe <- read.table("test2.txt", skip=4, header=TRUE, sep="\t")
head(test_dataframe)
##    X t1 t2 t3 t4 t5 t6 t7 t8
## 1 r1  1  0  1  0  0  1  0  2
## 2 r2  1  2  2  1  2  1  2  1
## 3 r3  0  0  0  2  1  1  0  1
## 4 r4  0  0  1  1  2  0  0  0
## 5 r5  0  2  1  1  1  0  0  0
## 6 r6  2  2  0  1  1  1  0  0

Temos outros argumentos úteis. Com o “na.strings” você define qual texto deve
ser interpretado como um NA. Com o row.names e col.names, você pode suprir os
nomes das linhas e colunas. Você também pode definir se strings devem ser
interpretados como factors ou não com o argumento “stringsAsFactors”. Para ver
a lista completa de argumentos possiveis para o read.table, acesse aqui:

Lendo arquivos do Excel

Para arquivos em Excel, existem algumas maneiras. A primeira é salvar o arquivo
em formato CSV pelo Excel. O Excel permite e tem uma boa interface para isso.

Mas, para ler o próprio arquivo XLS, também podemos usar um pacote chamado
“xlsx”.

Após instalar o pacote com install.packages(“xlsx”), carregue o mesmo com
library(“xlsx”). Então, para carregar os dados, você deve usar a função
read.xlsx, fornecendo o nome do arquivo a ser lido e o nome ou índice da
planilha. Fiz um arquivo de teste, que você pode baixar clicando aqui:

library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
xl_data <- read.xlsx("test_excel.xlsx", "Plan1")
print(xl_data)
##     Nome Idade             Email
## 1 Felipe    70 felipe@felipe.com
## 2   Jose    30     jose@jose.com
## 3  Maria    20   maria@maria.com
## 4 Rafael    34 rafael@rafael.com
## 5  Luiza    25   luiza@luiza.com

Com este pacote, você também pode definir a linha de início (startRow), a linha
de término (endRow), se a tabela tem cabeçalho (header), definir a classe de
cada coluna (colClasses), entre outros. Para ver a lista completa de comandos,
acesse o manual do pacote neste link.

Lendo arquivos de texto

Você também pode querer analisar longos arquivos de texto. Um arquivo de texto
pode conter, por exemplo, tweets que você deseja analisar, um em cada linha. Fiz um arquivo de texto para teste que pode ser baixado clicando aqui. Para esta análise, você pode usar a função readLines. Basta prover o nome do arquivo ou uma conexão. Adicionalmente, você pode definir a quantidade de linhas a serem lidas, com o argumento “n”:

text_vector <- readLines("linhas_texto.txt")
## Warning in readLines("linhas_texto.txt"): incomplete final line found on
## 'linhas_texto.txt'
print(text_vector)
## [1] "Este é um exemplo com linhas de texto. Esta é a primeira"
## [2] "A segunda linha de texto tem mais um pouco de texto"
## [3] "Linha de texto número 3 chegando"
## [4] "Só mais uma para finalizar"
text_vector_2 <- readLines("linhas_texto.txt",2)
print(text_vector_2)
## [1] "Este é um exemplo com linhas de texto. Esta é a primeira"
## [2] "A segunda linha de texto tem mais um pouco de texto"

Lendo uma página da Internet

Outra possibilidade é ler uma página da Internet. Desta forma, você pode extrair
através do próprio R informações importantes. Para isso, você cria uma conexão
com a função URL e aí pode utilizar o readLines da mesma forma que vimos acima:

conexao <- url("http://felipegalvao.com.br/")

linhas_pagina <- readLines(conexao)

print(head(linhas_pagina))
## [1] "<!DOCTYPE html>"              "<html lang=\"pt\">"
## [3] ""                             "<head>"
## [5] ""                             "    <meta charset=\"utf-8\">"

Por enquanto é isso. O R possui muitas outras opções para importação de dados, e eventualmente falaremos sobre elas aqui no blog.

Abraços!

6 comments on “R Básico – Importação de Dados para o R

  1. Boa noite Felipe !
    Primeiramente meus parabéns pela iniciativa, muito boa sua didática ,por favor gostaria de tirar uma duvida se possivel!
    tenho uma base de dados que importei para o R e preciso plotar vários gráficos e ainda fazer series temporais. teria algum material para me indicar?? onde posso aprender isso ??
    fiz algumas tentativas e consigo plotar um grafico , mas com a base de dados toda. tenho que separar ano a ano e fazer uma analise para gerar um relatório.
    Agradecido pela atenção e fico no aguardo do retorno.

    1. Fala Nilton, tudo bem?

      Tem tempo que não mexo com Data Science, mas quando estudava mais sobre o assunto, os melhores materiais eram o Datacamp e o Dataquest. São completíssimos, e pelo menos nessa época, uma boa parte do material era gratuita. O material é todo em inglês, mas vale a pena.

      Se procura algo em português, esse artigo me parece bem completo:
      http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:03_apostila:05a-graficos

      Abraços!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *