library(zip)
library(readxl)
library(tidyverse)
library(kableExtra)
Introdução
Neste post vamos aprender a importar dados para o R. Utilizaremos os dados do IDEB (Índice de Desenvolvimento da Educação Básica).
Dentre os pacotes do tidyverse, há vários que podem ser utilizados para baixar arquivos com as mais diferentes extensões:
Pacotes utilizados
Baixar e descompactar arquivos no R
As explicações sobre o código abaixo, sobre como baixar e descompactar arquivos diretamente no R, estão em um post anterior que pode ser acessado clicando aqui.
if(!file.exists("./data")){dir.create("./data")}
<- "https://download.inep.gov.br/educacao_basica/portal_ideb/planilhas_para_download/2021/divulgacao_anos_iniciais_escolas_2021.zip"
url
<- "./data/divulgacao_anos_iniciais_escolas_2021.zip"
destfile
download.file(url = url,
destfile = destfile,
mode = "wb")
unzip(zipfile = "./data/divulgacao_anos_iniciais_escolas_2021.zip",
exdir = "./data",
overwrite = T)
Importação do banco de dados
Ao baixar o arquivo, vimos que ele tem uma extensão .xlsx e, portanto, está no formato do programa excel. Para importá-lo, vamos utlizar o pacote readxl.
A princípio, na função read_excel, vamos fornecer somente o caminho para o arquivo que queremos importar.
<- read_excel("./data/divulgacao_anos_iniciais_escolas_2021.xlsx") escolas_2021
Usamos a função slice_head para dar uma olhada nas 10 primeiras linhas (casos) do arquivo.
As nove primeiras não tem informações úteis. Somente na décima linha há os nomes das variáveis.
|>
escolas_2021 slice_head(n = 10) |>
kable() |>
kable_styling(latex_options = "striped") |>
scroll_box(width = "100%", height = "300px")
...1 | Ministério da Educação | ...3 | ...4 | ...5 | ...6 | ...7 | ...8 | ...9 | ...10 | ...11 | ...12 | ...13 | ...14 | ...15 | ...16 | ...17 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NA | Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Ensino Fundamental Regular - Anos Iniciais | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Indicadores educacionais compostos por: Taxa de Aprovação, SAEB e IDEB por escola e rede de ensino - 2021. | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Sigla da UF | Código do Município | Nome do Município | Código da Escola | Nome da Escola | Rede | Taxa de Aprovação - 2021 | NA | NA | NA | NA | NA | NA | Nota SAEB - 2021 | NA | NA | IDEB 2021 (N x P) |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | Matemática | Língua Portuguesa | Nota Média Padronizada (N) | NA |
NA | NA | NA | NA | NA | NA | 1º ao 5º ano | 1º | 2º | 3º | 4º | 5º | Indicador de Rendimento (P) | NA | NA | NA | NA |
SG_UF | CO_MUNICIPIO | NO_MUNICIPIO | ID_ESCOLA | NO_ESCOLA | REDE | VL_APROVACAO_2021_SI_4 | VL_APROVACAO_2021_SI | VL_APROVACAO_2021_1 | VL_APROVACAO_2021_2 | VL_APROVACAO_2021_3 | VL_APROVACAO_2021_4 | VL_INDICADOR_REND_2021 | VL_NOTA_MATEMATICA_2021 | VL_NOTA_PORTUGUES_2021 | VL_NOTA_MEDIA_2021 | VL_OBSERVADO_2021 |
RO | 1100015 | Alta Floresta D'Oeste | 11024372 | EMEIEF ANA NERY | Municipal | 93.3 | 83.3 | 100 | 100 | 84.6 | 100 | 0.92893400000000004 | ND | ND | - | - |
A imagem abaixo mostra o arquivo aberto no Excel. É possível ver que há um cabeçalho e várias informações que não são importantes para deixar o banco de dados num formato organizado (“tidy”) para as análises.
Vamos usar o argumento skip para que as nove primeiras linhas sejam ignoradas. Com esse ajuste, importamos o arquivo de modo que a primeira linha lida na planilha do excel correspondeu aos nomes das variáveis.
<- read_excel("data/divulgacao_anos_iniciais_escolas_2021.xlsx",
escolas_2021 skip = 9)
|>
escolas_2021 slice_head()
# A tibble: 1 × 17
SG_UF CO_MUNICIPIO NO_MUNICIPIO ID_ESCOLA NO_ESCOLA REDE
<chr> <dbl> <chr> <dbl> <chr> <chr>
1 RO 1100015 Alta Floresta D'Oeste 11024372 EMEIEF ANA NERY Municipal
# ℹ 11 more variables: VL_APROVACAO_2021_SI_4 <chr>,
# VL_APROVACAO_2021_SI <chr>, VL_APROVACAO_2021_1 <chr>,
# VL_APROVACAO_2021_2 <chr>, VL_APROVACAO_2021_3 <chr>,
# VL_APROVACAO_2021_4 <chr>, VL_INDICADOR_REND_2021 <chr>,
# VL_NOTA_MATEMATICA_2021 <chr>, VL_NOTA_PORTUGUES_2021 <chr>,
# VL_NOTA_MEDIA_2021 <chr>, VL_OBSERVADO_2021 <chr>
Agora vamos ver as últimas linhas do arquivo.
As três últimas linhas também não têm informações importantes, portanto, não precisam ser importadas.
|>
escolas_2021 slice_tail(n = 10) |>
kable() |>
kable_styling(latex_options = "striped") |>
scroll_box(width = "100%", height = "300px")
SG_UF | CO_MUNICIPIO | NO_MUNICIPIO | ID_ESCOLA | NO_ESCOLA | REDE | VL_APROVACAO_2021_SI_4 | VL_APROVACAO_2021_SI | VL_APROVACAO_2021_1 | VL_APROVACAO_2021_2 | VL_APROVACAO_2021_3 | VL_APROVACAO_2021_4 | VL_INDICADOR_REND_2021 | VL_NOTA_MATEMATICA_2021 | VL_NOTA_PORTUGUES_2021 | VL_NOTA_MEDIA_2021 | VL_OBSERVADO_2021 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DF | 5300108 | Brasília | 53068165 | EC 02 DA ESTRUTURAL | Estadual | 96.6 | 100 | 98.8 | 92.1 | 99 | 100 | 0.97885200000000006 | 204.84 | 191.58 | 5.3564860000000003 | 5.2 |
DF | 5300108 | Brasília | 53068173 | EC 831 DE SAMAMBAIA | Estadual | 96 | 97 | 100 | 89.8 | 100 | 92.3 | 0.95640000000000003 | 222.24 | 217.86 | 6.1663649999999999 | 5.9 |
DF | 5300108 | Brasília | 53068190 | EC 01 DO PORTO RICO | Estadual | 99.3 | 98.8 | 100 | 98.1 | 100 | 100 | 0.99373699999999998 | ND | ND | - | - |
DF | 5300108 | Brasília | 53068203 | EC 02 DO ITAPOA | Estadual | 96.2 | 100 | 98.7 | 80.8 | 99.2 | 96.6 | 0.94445500000000004 | 201.88 | 203.75 | 5.5212700000000003 | 5.2 |
DF | 5300108 | Brasília | 53068211 | CEF MIGUEL ARCANJO | Estadual | - | - | - | - | - | - | - | - | - | - | - |
DF | 5300108 | Brasília | 53068220 | EC DOM BOSCO | Estadual | 93.1 | 98.7 | 97.8 | 83.8 | 100 | 87.7 | 0.93123100000000003 | 234.2 | 223.56 | 6.498246 | 6.1 |
DF | 5300108 | Brasília | 53068238 | EC VILA BURITIS | Estadual | 98 | 100 | 100 | 92 | 100 | 97.3 | 0.97757300000000003 | 229.85 | 218.26 | 6.318867 | 6.2 |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Fonte: MEC/Inep | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Notas: ND - Número de participantes no SAEB insuficiente para que os resultados sejam divulgados. | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
É possível ver na imagem do arquivo aberto no excel que as últimas linhas são notas explicativas.
A função glimpse mostra que o arquivo agora tem 63529 casos, mas só vamos precisar de 63526 linhas.
|>
escolas_2021 glimpse()
Rows: 63,529
Columns: 17
$ SG_UF <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO"…
$ CO_MUNICIPIO <dbl> 1100015, 1100015, 1100015, 1100015, 1100015, 1…
$ NO_MUNICIPIO <chr> "Alta Floresta D'Oeste", "Alta Floresta D'Oest…
$ ID_ESCOLA <dbl> 11024372, 11024666, 11024682, 11024828, 110249…
$ NO_ESCOLA <chr> "EMEIEF ANA NERY", "EMEIEF BOA ESPERANCA", "EE…
$ REDE <chr> "Municipal", "Municipal", "Estadual", "Municip…
$ VL_APROVACAO_2021_SI_4 <chr> "93.3", "98.5", "100", "100", "-", "67.5", "-"…
$ VL_APROVACAO_2021_SI <chr> "83.3", "100", "-", "100", "-", "100", "-", "1…
$ VL_APROVACAO_2021_1 <chr> "100", "100", "-", "100", "-", "100", "-", "10…
$ VL_APROVACAO_2021_2 <chr> "100", "100", "-", "100", "-", "75", "-", "100…
$ VL_APROVACAO_2021_3 <chr> "84.6", "100", "100", "100", "-", "50", "-", "…
$ VL_APROVACAO_2021_4 <chr> "100", "94.4", "100", "100", "-", "38.5", "-",…
$ VL_INDICADOR_REND_2021 <chr> "0.92893400000000004", "0.98827500000000001", …
$ VL_NOTA_MATEMATICA_2021 <chr> "ND", "ND", "216.53", "168.75", "-", "169.64",…
$ VL_NOTA_PORTUGUES_2021 <chr> "ND", "ND", "206.92", "157.99", "-", "170.73",…
$ VL_NOTA_MEDIA_2021 <chr> "-", "-", "5.8584860000000001", "4.05701800000…
$ VL_OBSERVADO_2021 <chr> "-", "-", "5.9", "4.0999999999999996", "-", "2…
Desta forma, na função read_excel, utilizaremos o argumento n_max para excluir as três últimas linhas.
<- read_excel("data/divulgacao_anos_iniciais_escolas_2021.xlsx",
escolas_2021 skip = 9,
n_max = 63526)
|>
escolas_2021 slice_tail()
# A tibble: 1 × 17
SG_UF CO_MUNICIPIO NO_MUNICIPIO ID_ESCOLA NO_ESCOLA REDE
<chr> <dbl> <chr> <dbl> <chr> <chr>
1 DF 5300108 Brasília 53068238 EC VILA BURITIS Estadual
# ℹ 11 more variables: VL_APROVACAO_2021_SI_4 <chr>,
# VL_APROVACAO_2021_SI <chr>, VL_APROVACAO_2021_1 <chr>,
# VL_APROVACAO_2021_2 <chr>, VL_APROVACAO_2021_3 <chr>,
# VL_APROVACAO_2021_4 <chr>, VL_INDICADOR_REND_2021 <chr>,
# VL_NOTA_MATEMATICA_2021 <chr>, VL_NOTA_PORTUGUES_2021 <chr>,
# VL_NOTA_MEDIA_2021 <chr>, VL_OBSERVADO_2021 <chr>
Agora o banco de dados termina onde deveria. Mais uma olhada no arquivo com a função glimpse.
|>
escolas_2021 glimpse()
Rows: 63,526
Columns: 17
$ SG_UF <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO"…
$ CO_MUNICIPIO <dbl> 1100015, 1100015, 1100015, 1100015, 1100015, 1…
$ NO_MUNICIPIO <chr> "Alta Floresta D'Oeste", "Alta Floresta D'Oest…
$ ID_ESCOLA <dbl> 11024372, 11024666, 11024682, 11024828, 110249…
$ NO_ESCOLA <chr> "EMEIEF ANA NERY", "EMEIEF BOA ESPERANCA", "EE…
$ REDE <chr> "Municipal", "Municipal", "Estadual", "Municip…
$ VL_APROVACAO_2021_SI_4 <chr> "93.3", "98.5", "100", "100", "-", "67.5", "-"…
$ VL_APROVACAO_2021_SI <chr> "83.3", "100", "-", "100", "-", "100", "-", "1…
$ VL_APROVACAO_2021_1 <chr> "100", "100", "-", "100", "-", "100", "-", "10…
$ VL_APROVACAO_2021_2 <chr> "100", "100", "-", "100", "-", "75", "-", "100…
$ VL_APROVACAO_2021_3 <chr> "84.6", "100", "100", "100", "-", "50", "-", "…
$ VL_APROVACAO_2021_4 <chr> "100", "94.4", "100", "100", "-", "38.5", "-",…
$ VL_INDICADOR_REND_2021 <chr> "0.92893400000000004", "0.98827500000000001", …
$ VL_NOTA_MATEMATICA_2021 <chr> "ND", "ND", "216.53", "168.75", "-", "169.64",…
$ VL_NOTA_PORTUGUES_2021 <chr> "ND", "ND", "206.92", "157.99", "-", "170.73",…
$ VL_NOTA_MEDIA_2021 <chr> "-", "-", "5.8584860000000001", "4.05701800000…
$ VL_OBSERVADO_2021 <chr> "-", "-", "5.9", "4.0999999999999996", "-", "2…
Ainda temos problemas. Como veremos no livro de códigos abaixo, variáveis como VL_OBSERVADO_2021 e VL_NOTA_PORTUGUES_2021 deveriam ser numéricas, mas o R as está tratando como caractere. Logo nos primeiros casos vemos que os valores “ND” e “-” são utilizados para indicar valores ausentes. Em um objeto que contém números e caracteres o R força o objeto a ser caractere (chr). Assim, na função read_excel vamos usar o argumento “na” para que, ao importar o arquivo, o R trate “ND” e “-” como valores ausentes.
Missing (ou NAs, na linguagem R) são valores faltantes em uma ou mais variáveis em um conjunto de dados. Isso pode ocorrer por vários motivos, como problemas técnicos durante a coleta de dados, erros de entrada de dados ou simplesmente porque as informações não estavam disponíveis no momento da coleta. Os dados faltantes podem ser problemáticos para as análises, pois podem prejudicar a precisão e a confiabilidade das conclusões obtidas.
<- read_excel("data/divulgacao_anos_iniciais_escolas_2021.xlsx",
escolas_2021 na = c("ND","-"),
skip = 9,
n_max = 63526)
Finalmente, temos o arquivo importado de forma adequada.
|>
escolas_2021 glimpse()
Rows: 63,526
Columns: 17
$ SG_UF <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO"…
$ CO_MUNICIPIO <dbl> 1100015, 1100015, 1100015, 1100015, 1100015, 1…
$ NO_MUNICIPIO <chr> "Alta Floresta D'Oeste", "Alta Floresta D'Oest…
$ ID_ESCOLA <dbl> 11024372, 11024666, 11024682, 11024828, 110249…
$ NO_ESCOLA <chr> "EMEIEF ANA NERY", "EMEIEF BOA ESPERANCA", "EE…
$ REDE <chr> "Municipal", "Municipal", "Estadual", "Municip…
$ VL_APROVACAO_2021_SI_4 <dbl> 93.3, 98.5, 100.0, 100.0, NA, 67.5, NA, 100.0,…
$ VL_APROVACAO_2021_SI <dbl> 83.3, 100.0, NA, 100.0, NA, 100.0, NA, 100.0, …
$ VL_APROVACAO_2021_1 <dbl> 100.0, 100.0, NA, 100.0, NA, 100.0, NA, 100.0,…
$ VL_APROVACAO_2021_2 <dbl> 100.0, 100.0, NA, 100.0, NA, 75.0, NA, 100.0, …
$ VL_APROVACAO_2021_3 <dbl> 84.6, 100.0, 100.0, 100.0, NA, 50.0, NA, 100.0…
$ VL_APROVACAO_2021_4 <dbl> 100.0, 94.4, 100.0, 100.0, NA, 38.5, NA, 100.0…
$ VL_INDICADOR_REND_2021 <dbl> 0.928934, 0.988275, 1.000000, 1.000000, NA, 0.…
$ VL_NOTA_MATEMATICA_2021 <dbl> NA, NA, 216.53, 168.75, NA, 169.64, NA, NA, 17…
$ VL_NOTA_PORTUGUES_2021 <dbl> NA, NA, 206.92, 157.99, NA, 170.73, NA, NA, 16…
$ VL_NOTA_MEDIA_2021 <dbl> NA, NA, 5.858486, 4.057018, NA, 4.305639, NA, …
$ VL_OBSERVADO_2021 <dbl> NA, NA, 5.9, 4.1, NA, 2.7, NA, NA, 4.1, 3.5, N…
Conclusões
Neste post aprendemos a usar o R para importar arquivos do excel. De modo geral, os mesmos princípios podem ser aplicados para importar arquivos com outras extensões, mas sempre é bom conferir as vinhetas de cada pacote.
Se estiver precisando de ajuda para analisar dados quantitativos ou outras atividades acadêmicas, você pode contatar a Beta Consultoria e Assessoria através do e-mail beta.consultac@gmail.com
Livro de códigos
Nome da Variável | Descrição | Tipo |
---|---|---|
SG_UF | Sigla da UF | Caractere |
CO_MUNICIPIO | Código do Município | Numérico |
NO_MUNICIPIO | Nome do Município | Caractere |
ID_ESCOLA | Código da Escola | Numérico |
NO_ESCOLA | Nome da Escola | Caractere |
REDE | Rede | Caractere |
VL_APROVACAO_2021_SI_4 | 1º ao 5º ano (Taxa de aprovação) | Numérico |
VL_APROVACAO_2021_SI | 1º ano (Taxa de aprovação) | Numérico |
VL_APROVACAO_2021_1 | 2º ano (Taxa de aprovação) | Numérico |
VL_APROVACAO_2021_2 | 3º ano (Taxa de aprovação) | Numérico |
VL_APROVACAO_2021_3 | 4º ano (Taxa de aprovação) | Numérico |
VL_APROVACAO_2021_4 | 5º ano (Taxa de aprovação) | Numérico |
VL_INDICADOR_REND_2021 | Indicador de Rendimento (P) | Numérico |
VL_NOTA_MATEMATICA_2021 | Matemática (Nota SAEB) | Numérico |
VL_NOTA_PORTUGUES_2021 | Língua Portuguesa (Nota SAEB) | Numérico |
VL_NOTA_MEDIA_2021 | Nota Média Padronizada (N) (Nota SAEB) | Numérico |
VL_OBSERVADO_2021 | IDEB 2021 (N x P) | Numérico |