R
(…) o fato da Ciência de Dados existir como uma área se deve a uma falha colossal da estatística. Para mim, o que eu faço é o que é a estatística. É obter insights a partir dos dados utilizando modelagem e visualização. (Hadley Wickham)
O objetivo desta aula é introduzir os principais pacotes e funções para importar dados para o R
.
Antes de começar…
?$%^&(){}[]<>/...
R
qual o caminho até esta pastaÉ possível definir no RStudio
através da sequência:
Session > Set Working Directory > Choose Directory
05:00
Existem duas maneiras de definir caminhos para um arquivo ou diretório - caminhos absolutos e caminhos relativos.
Um caminho relativo especifica um local a partir do local atual.
Um caminho absoluto especifica um local da raiz do sistema de arquivos.
RStudio
RStudio
RStudio
possibilita a criação de um ambiente que permite o uso mais integrado desses elementos..Rproj
dentro de um diretório de trabalhoRStudio
A estrutura básica de um projeto é apresenta na árvore abaixo:
RStudio
Para criar um novo projeto, fazemos:
File > New Project
RStudio
Em seguida, indicamos o tipo específico de projeto. Em geral, criamos um projeto em um novo diretório
RStudio
Por fim, damos um nome ao projeto (diretório) e indicamos onde estará localizado no computador:
RStudio
readr
O pacote readr
oferece algumas funcionalidades que facilitam a leitura de dados no formato retangular
readr
As principais funções são:
read_delim()
: arquivos separados por qualquer delimitadorread_csv()
: arquivos separados por vírgularead_csv2()
: arquivos separados por ponto-e-vírgularead_tsv()
: arquivos delimitados por Tab
read_fwf()
: arquivos com colunas de tamanho fixoread_table()
: arquivos delimitados por espaço em brancoDe forma geral, todas as funções são casos especiais da função geral read_delim()
O arquivo abaixo apresenta delimitação por Tabs
O arquivo abaixo apresenta delimitação por vírgulas (comma separated values - CSV)
O arquivo abaixo apresenta delimitação por ponto e vírgula (;)
.txt
ou .csv
Arquivos .txt
são arquivos padrões de texto, enquanto que arquivos .csv
são arquivos geralmente separados por vírgula (,) ou ponto-e-vírgula (;).
A função a ser utilizada para ler os dados depende da forma em que as variáveis estão delimitadas.
.txt
Para arquivos .txt
simples, utilizamos a função básica read_delim()
:
Alguns argumentos da função são:
delim
: indica qual o caracter usado para separar as colunas.col_names
= TRUE
ou FALSE
: indica se a primeira linha contém o nome das variáveiscol_types
: indica o tipo da variável. Se col_type = NULL
(default), as variáveis são imputadas automaticamente.skip
: indica quantas linhas devem ser ignoradas no começo do arquivotrim_ws
: elimina espaços em branco desnecessários antes e depois do valor da variávelvignette("readr")
.txt
Neste exemplo, vamos ler os dados participantes_tab.txt
através da função read_delim()
:
# Ler dados
participantes <- readr::read_delim(
file = "Dados/participantes_tab.txt",
delim = "\t",
show_col_types = FALSE
)
participantes
## # A tibble: 6 × 4
## Nome Idade Sexo Cidade
## <chr> <dbl> <chr> <chr>
## 1 Maria 45 F "João Pessoa "
## 2 João 32 M "Campina Grande"
## 3 Francisco 18 M "Sapé"
## 4 Alice 17 F "Mariz"
## 5 Martin 22 M "Areia"
## 6 Dora 32 F "Conde"
.txt
Para este exemplo, utilizaremos um arquivo que usa |
como separador:
# Abrir dados
individuos_alt <- read_delim(
"Dados/participantes_barra.txt",
delim = "|"
)
individuos_alt
## # A tibble: 6 × 4
## Nome Idade Sexo Cidade
## <chr> <dbl> <chr> <chr>
## 1 Maria 45 F João Pessoa
## 2 João 32 M Campina Grande
## 3 Francisco 18 M Sapé
## 4 Alice 17 F Mariz
## 5 Martin 22 M Areia
## 6 Dora 32 F Conde
.txt
|
. Na verdade, qualquer caractere utilizado para separar valores das variáveis deve ser indicado no argumento delim
.readr
é o fato de lerem diretamente arquivos compactados (.gz
, .bz2
, .xz
, .rar
ou .zip
).csv
Para ler arquivos .csv
, podemos utilizar a mesma função read_delim()
, com o argumento delim = ","
. No entanto, a função read_csv()
lê os dados diretamente:
# Importando os dados
turistas_br_2021 <- read_delim(
"Dados/chegadas_turistas_2021.csv",
delim = ";"
)
# Checar primeiras linhas
head(turistas_br_2021, 5)
## # A tibble: 5 × 12
## continente cod_continente pais cod_pais uf cod_uf via cod_via ano
## <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
## 1 "\xc1frica" 1 "\xc1fri… 2 Acre 1 "A\x… 1 2021
## 2 "\xc1frica" 1 "\xc1fri… 2 Acre 1 "A\x… 1 2021
## 3 "\xc1frica" 1 "\xc1fri… 2 Acre 1 "A\x… 1 2021
## 4 "\xc1frica" 1 "\xc1fri… 2 Acre 1 "A\x… 1 2021
## 5 "\xc1frica" 1 "\xc1fri… 2 Acre 1 "A\x… 1 2021
## # ℹ 3 more variables: mes <chr>, cod_mes <dbl>, chegadas <dbl>
Como vimos, há nesse arquivos problemas de encoding (caracteres especiais não são lidos corretamente).
.csv
Para resolver problemas com caracteres especiais, fazemos
# Importando os dados
turistas_br_2021 <- read_delim(
"Dados/chegadas_turistas_2021.csv",
delim = ";",
locale = locale(encoding = "Latin1")
)
# Checar primeiras linhas
head(turistas_br_2021, 5)
## # A tibble: 5 × 12
## continente cod_continente pais cod_pais uf cod_uf via cod_via ano
## <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
## 1 África 1 África do… 2 Acre 1 Aérea 1 2021
## 2 África 1 África do… 2 Acre 1 Aérea 1 2021
## 3 África 1 África do… 2 Acre 1 Aérea 1 2021
## 4 África 1 África do… 2 Acre 1 Aérea 1 2021
## 5 África 1 África do… 2 Acre 1 Aérea 1 2021
## # ℹ 3 more variables: mes <chr>, cod_mes <dbl>, chegadas <dbl>
.csv
Considere agora ler um arquivo .csv
diretamente de uma página na internet (URL). Os dados apresentam informações sobre o número de queimadas
read_csv2()
. A diferença é que esta considera colunas separadas por ponto-e-vírgula (;), enquanto que read_csv()
considera a separação por vírgula (,).Neste exercício, iremos obter os dados históricos do Índice Bovespa (Ibovespa) disponíveis no site da B3 http://www.b3.com.br/pt_br/market-data-e-indices/indices/indices-amplos/indice-ibovespa-ibovespa-estatisticas-historicas.htm
readr
para abrir os dados15:00
Um pacote útil para leitura de arquivos do Microsoft Excel (.xls
ou .xlsx
) é o pacote readxl
, desenvolvido por Hadley Wickham (The RStudio Team)
Para mais informações sobre o pacote readxl
, ver a documentação em https://readxl.tidyverse.org.
A principal função para leitura é a read_excel()
. Tal função identifica se a extensão do arquivo é .xls
ou .xlsx
.
Caso se conheça o formato exato do arquivo, pode-se utilizar as funcões read_xls()
ou read_xlsx()
.
Para este exemplo, utilizaremos os dados de Frotas de Veículos por municípios para o último trimestre de 2022. A série histórica está disponível na página do Ministério da Infraestrurura
# Importando os dados
frota_2022 <- readxl::read_excel(
"Dados/frota_munic_modelo_2022.xls",
skip = 2
)
# Checar primeiras linhas
head(frota_2022)
## # A tibble: 6 × 24
## UF MUNICIPIO TOTAL AUTOMOVEL BONDE CAMINHAO `CAMINHAO TRATOR` CAMINHONETE
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AC ACRELANDIA 7553 1711 0 462 38 837
## 2 AC ASSIS BRAS… 2203 398 0 30 0 192
## 3 AC BRASILEIA 12126 2812 0 326 286 1649
## 4 AC BUJARI 2675 749 0 134 42 329
## 5 AC CAPIXABA 2710 758 0 95 6 301
## 6 AC CRUZEIRO D… 38777 8089 0 752 116 3425
## # ℹ 16 more variables: CAMIONETA <dbl>, `CHASSI PLATAF` <dbl>,
## # CICLOMOTOR <dbl>, `MICRO-ONIBUS` <dbl>, MOTOCICLETA <dbl>, MOTONETA <dbl>,
## # ONIBUS <dbl>, QUADRICICLO <dbl>, REBOQUE <dbl>, `SEMI-REBOQUE` <dbl>,
## # `SIDE-CAR` <dbl>, OUTROS <dbl>, `TRATOR ESTEI` <dbl>, `TRATOR RODAS` <dbl>,
## # TRICICLO <dbl>, UTILITARIO <dbl>
Para selecionar uma aba específica, fazemos:
# Nomes das abas
readxl::excel_sheets("Dados/frota_munic_modelo_2022.xls")
## [1] "DEZEMBRO_2022" "NOVEMBRO_2022" "OUTUBRO_2022"
# Importando os dados
frota_2022 <- readxl::read_excel(
"Dados/frota_munic_modelo_2022.xls",
sheet = "NOVEMBRO_2022",
skip = 2
)
readxl::excel_sheets("Dados/frota_munic_modelo_2022.xls")
## [1] "DEZEMBRO_2022" "NOVEMBRO_2022" "OUTUBRO_2022"
# Checar primeiras linhas
head(frota_2022)
## # A tibble: 6 × 24
## UF MUNICIPIO TOTAL AUTOMOVEL BONDE CAMINHAO `CAMINHAO TRATOR` CAMINHONETE
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AC ACRELANDIA 7526 1704 0 462 38 840
## 2 AC ASSIS BRAS… 2186 395 0 32 0 190
## 3 AC BRASILEIA 12055 2799 0 322 282 1639
## 4 AC BUJARI 2656 744 0 133 41 328
## 5 AC CAPIXABA 2695 755 0 95 6 298
## 6 AC CRUZEIRO D… 38517 8047 0 753 112 3392
## # ℹ 16 more variables: CAMIONETA <dbl>, `CHASSI PLATAF` <dbl>,
## # CICLOMOTOR <dbl>, `MICRO-ONIBUS` <dbl>, MOTOCICLETA <dbl>, MOTONETA <dbl>,
## # ONIBUS <dbl>, QUADRICICLO <dbl>, REBOQUE <dbl>, `SEMI-REBOQUE` <dbl>,
## # `SIDE-CAR` <dbl>, OUTROS <dbl>, `TRATOR ESTEI` <dbl>, `TRATOR RODAS` <dbl>,
## # TRICICLO <dbl>, UTILITARIO <dbl>
Um importante formato de arquivos é o JSON (Java Script Object Notation).
Alguns exemplos de arquivos JSON são:
Alguns exemplos de arquivos JSON são:
Alguns exemplos de arquivos JSON são:
Uma vez instalado e carregado o pacote rjson
, podemos utilizar a função fromJSON()
:
Para converter o objeto em data frame, fazemos
# Converter para data frame
json_df <- as.data.frame(json_data)
json_df
## ID Name Salary StartDate Dept
## 1 1 Rick 623.30 1/1/2012 IT
## 2 2 Dan 515.20 9/23/2013 Operations
## 3 3 Michelle 611.00 11/15/2014 IT
## 4 4 Ryan 729.00 5/11/2014 HR
## 5 5 Gary 843.25 3/27/2015 Finance
## 6 6 Nina 578.00 5/21/2013 IT
## 7 7 Simon 632.80 7/30/2013 Operations
## 8 8 Guru 722.50 6/17/2014 Finance
haven
O pacote haven
possibilita a leitura e escrita de vários formatos de dados dos principais pacotes estatísticos disponíveis, tais como SPSS
, SAS
e Stata
.
Atualmente, suporta os seguintes arquivos:
read_sas()
, read_xpt()
e write_xpt()
read_sav()
e write_sav()
read_dta()
lê arquivos .dta
(até a versão 15), enquanto write_dta()
cria arquivos .dta
(versões 8-15).haven
Seguem alguns exemplos da sintaxe:
O termo web scraping refere-se à prática de coleta de dados web, permitindo a extração de dados diretamente de sites e convertendo-os em informação estruturada para posterior análise.
No R
, existem três pacotes principais para a extração de dados da web:
httr
: realiza requisições web para obtenção das páginas de interessexml2
: estrutura arquivos HTML ou XML de forma eficientervest
: reune funcionalidade dos dois pacotes anteriores e traz funções específicasÉ importante ter conhecimento prévio de HTML
Como exemplo, gostaríamos de baixar os dados da tabela do campeonato brasileiro de 2022.
# Carregar pacote
library(rvest)
# Definir url da página
url <- "https://pt.wikipedia.org/wiki/Campeonato_Brasileiro_de_Futebol_de_2023_-_S%C3%A9rie_A"
# Ler arquivo
cod_html <- read_html(url)
# Extrair tabela
tabela_html <- html_element(
cod_html,
xpath = '//*[@id="mw-content-text"]/div[1]/table[3]'
)
# Transformar para data frame
brasileirao_2023 <- html_table(tabela_html)
# Visualizar dados
brasileirao_2023
## # A tibble: 20 × 11
## Pos Equipevde Pts J V E D GP GC SG
## <int> <chr> <int> <int> <int> <int> <int> <int> <int> <chr>
## 1 1 Palmeiras (C) 70 38 20 10 8 64 33 +31
## 2 2 Grêmio 68 38 21 5 12 63 56 +7
## 3 3 Atlético Mineiro 66 38 19 9 10 52 32 +20
## 4 4 Flamengo 66 38 19 9 10 56 42 +14
## 5 5 Botafogo 64 38 18 10 10 58 37 +21
## 6 6 Red Bull Bragantino 62 38 17 11 10 49 35 +14
## 7 7 Fluminense 56 38 16 8 14 51 47 +4
## 8 8 Athletico Paranaense 56 38 14 14 10 51 43 +8
## 9 9 Internacional 55 38 15 10 13 46 45 +1
## 10 10 Fortaleza 54 38 15 9 14 45 44 +1
## 11 11 São Paulo 53 38 14 11 13 40 38 +2
## 12 12 Cuiabá 51 38 14 9 15 40 39 +1
## 13 13 Corinthians 50 38 12 14 12 47 48 −1
## 14 14 Cruzeiro 47 38 11 14 13 35 32 +3
## 15 15 Vasco da Gama 45 38 12 9 17 41 51 −10
## 16 16 Bahia 44 38 12 8 18 50 53 −3
## 17 17 Santos 43 38 11 10 17 39 64 −25
## 18 18 Goiás 38 38 9 11 18 36 53 −17
## 19 19 Coritiba 30 38 8 6 24 41 73 −32
## 20 20 América Mineiro 24 38 5 9 24 42 81 −39
## # ℹ 1 more variable: `Classificação ou descenso` <chr>
R
R
Nesta parte, veremos como:
R
R
Para salvar uma base de dados do R
em um único arquivo, utilizamos a função write_rds()
. O objeto pode ser lido através da função read_rds()
.
Para salvar múltiplos objetos em um único arquivo, utilizamos a função save()
. O objeto será salvo no formato .Rda
ou .RData
(mesma extensão). Os objetos podem ser restaurados através da função load()
Para salvar todos os dados e scripts de um projeto, utilizamos a função save.image()
. Sempre ao finalizar o R/RStudio, ele pergunta se gostaríamos de salvar o workspace. Se a resposta for afirmativa, da próxima vez que abrirmos o programa todo o workspace será carregado.