2. Importando os dados para sua análise

No R qualquer estrutura é armazenada na forma de um objeto, seja um valor, um conjunto de valores ou até mesmo uma base de dados. Essa linguagem se estrutura, por tanto, no paradigma da Programação Orientada a Objetos, ou seja, tudo será um objeto.

Para criar e alterar objetos no R é necessário utilizar o símbolo: <-, chamado de operador de atribuição. Esse operador é formado pelos símbolos “menor que” (<) e hífen (-). Mas, atenção! O símbolo “igual” (=) também pode ser utilizado, mas não recomendamos pois possui muitas outras utilidades e você pode se confundir. Por isso, neste curso, adotaremos somente o operador <- para criar e alterar objetos no R.

Observe na Figura 4 a etapa de criação de um objeto. Para criá-lo basta definir o nome, inserir o operador de atribuição e, por último, o valor que será atribuído. Veja a Figura 4:


Figura 4: Etapa de atribuição de dados a um objeto no R.


A seguir iremos praticar esta etapa de criação de um objeto, aprendendo a importar bancos de dados para analisar dados do Estado de Rosas, um estado fictício criado para este curso. Para as importações ocorrerem, vamos precisar utilizar uma função.


O conceito de função no R é semelhante às fórmulas que realizamos no Microsoft Excel. As funções são as ações que você quer que o R execute. Elas exigem, muitas vezes, valores de entrada (que denominamos input) e retornam valores de saída (também chamados de output). Sempre que escrever uma função, deverá inserir entre parênteses ( ) os chamados argumentos. Observe na figura 5 como seria fazer algumas das funções mais comuns no Excel, a função soma, média e cont.se:

Figura 5: Tela inicial da IDE RStudio.

Veja que acima temos três exemplos: o cálculo de uma soma, uma média e uma contagem de valores válidos. Todos estão com a função() na cor verde e seus respectivos argumentos na cor cinza. No R escrevemos utilizando esta mesma lógica. Observe na Figura 6 como é escrever uma função com R:

Figura 6: Tela inicial da IDE RStudio.

Percebe como é semelhante? Quase sempre as funções são escritas na língua inglesa; e em geral as funções podem ter um ou mais argumentos, separados por vírgulas (,) ou definidos pelo operador igual (=). Eventualmente, porém, uma função pode não precisar de argumento.

Observe neste módulo como utilizamos as funções, aprendendo a importar banco de dados. Usaremos funções para muitas atividades nos próximos módulos.

2.1 Importando arquivos no formato CSV

Para aprender a importação de um arquivo do tipo .csv utilizaremos o banco de dados exportado do e-SUS Notifica do Estado de Rosas (Figura 1). Para isso, utilizaremos uma função do pacote readr. Falaremos mais vezes dele em todo curso. Por enquanto, vamos instalá-lo para, em seguida, importar o arquivo {e_sus_notifica.csv}, disponível no menu lateral “Arquivos”, do módulo.


Para encontrar a sua base de dados, de forma rápida, você poderá utilizar o projeto (arquivo no formato .RProj) disponível no menu lateral “Arquivos”, do módulo.

Para consultar como criar e/ou utilizar um projeto acesse o Módulo 1.


Acompanhe as telas abaixo, pois vamos fazer um passo a passo!

  1. Crie um script em branco no RStudio seguindo o menu File, New File e R Script, repetindo os passos conforme a Figura 7:


Figura 7: Etapa de criação de um novo script no RStudio.


  1. Agora vamos escrever os primeiros comandos para instalar o pacote necessário no corpo do script:
  • Digite no RStudio os comandos para instalar o pacote que irá utilizar para importação da base: if(!require(readr)) install.packages("readr")
  • Em seguida, não esqueça de escrever os comandos para carregar o pacote: library(readr)

Veja, como seria construir um código utilizando às boas práticas para o uso de uma linguagem de programação:

# Esta primeira linha verifica se o pacote está instalado.
# Caso não esteja, o código abaixo irá prosseguir com a instalação do 
pacote readr if(!require(readr)) install.packages("readr") #Carregando o pacote readr library(readr)


  1. Agora que já instalou e carregou os pacotes necessários:
  • Clique no botão Run (Figura 8) para executar as linhas de código digitadas.
  • O RStudio é apenas uma interface gráfica para o R. Perceba que, ao rodar o código no painel do script, os códigos são executados no painel Console (Figura 8).

Lembre-se que a primeira linha de código verifica se o pacote está instalado e caso não esteja, será instalado e carregado, conforme a Figura 8.


Figura 8: Etapa de instalação do pacote readr noRStudio.


  1. Agora, vamos criar um objeto e escolher a função que iremos utilizar para abrir o banco de dados de casos leves de covid-19 (Figura 9):
  • Crie no seu RStudio o objeto que armazenará o banco de dados: {dados}.
  • Digite no seu RStudio o operador de atribuição <-, para sinalizar ao R que está armazenando o banco de dados no objeto {dados}.
  • Digite no seu RStudio a função read_csv2() do pacote readr. Veja na Figura 9 o destaque para a estrutura de uma função para criar um objeto que, neste caso, será uma tabela que armazenando o banco de dados do e-SUS Notifica.
  • Também será necessário definir o argumento file (arquivo) para que seja possível abrir o banco de dados no R. Este argumento solicita que você inclua o local (diretório ou pasta) onde está guardado o arquivo {e_sus_notifica.csv} e o nome do arquivo com sua extensão, tudo entre aspas conforme a Figura 9:


Figura 9: Estrutura de código criando o objeto dados no R.


Agora, veja os comandos abaixo e valide as linhas de códigos da Figura 9 que você digitou no seu Rstudio, e clique em Run:

# Esta primeira linha verifica se o pacote está instalado.
# Caso não esteja, o código abaixo irá prosseguir com a instalação
if(!require(readr)) install.packages("readr")

# Carregar o pacote readr
library(readr)

# Utilize a função read_csv2 para importar os dados 
# do arquivo e_sus_notifica.csv para um objeto chamado "dados"
dados <- read_csv2(file = "Dados/e_sus_notifica.csv")

Após clicar em Run, a tela do RStudio te devolverá resultados dos comandos executamos. Observe a Figura 10 onde colocamos em destaque o painel Console com os outputs de tudo o que acabamos de executar.


Figura 10: Script de importação de dados do e-SUS Notifica de Rosas, armazenado no objeto dados no R.


Lembre-se que neste curso os blocos em destaque indicam uma simulação de código no ambiente do R.

Figura 11: Blocos de código no R.

No bloco número 1, de fundo cinza claro, temos os códigos e funções que gostaríamos que você reproduzisse o script no seu RStudio. Perceba que, na primeira e segunda linha desta caixa temos frases iniciando com o símbolo hashtag (#). Lembre-se que no R esse símbolo é utilizado para indicar um comentário sobre as etapas de código.

No bloco número 2, temos o output da função. É uma reprodução do que será retornado a você quando executar os comandos da caixa número 1. Um output sempre começará com os símbolos hashtag e “maior que”, assim: #>.

Esta estrutura é apenas para compreensão do curso, ou seja, não é a visualização que você encontrará ao escrever scripts no RStudio e, por isso, acompanhe os prints de telas para apoiá-lo nas dúvidas.

2.2 Importando arquivos no formato DBFs

Provavelmente você já esteve em contato com os arquivos do tipo .dbf. Eles são muito comuns na análise de dados da vigilância em saúde, pois todos os bancos de dados como Sinan Net, Sinan Online, Sivep Gripe, SIM ou SINASC exportam dados neste tipo de arquivo.

Para aprender a importar um arquivo do tipo .dbf iremos utilizar o banco de dados {NINDINET.dbf}, exportado do sistema Sinan Net, Ficha de Notificação Individual (FIN), do Estado de Rosas. Observe na Figura 12 como é o formato deste banco de dados quando aberto em uma planilha no Microsoft Excel:


Figura 12: Banco de dados NINDINET.dbf no Microsoft Excel.


Para que seja possível manipular esses dados do {NINDINET.dbf} no R, utilizaremos a função read.dbf(), presente no pacote foreign. Acompanhe o passo a passo abaixo:

  1. Primeiro, certifique-se de que você possui o pacote foreign instalado no R, e em seguida, faça o carregamento do pacote. Acompanhe o script abaixo e replique-o em seu RStudio:
# Esta primeira linha verifica se o pacote está instalado.
# Caso não esteja, irá prosseguir com a instalação do pacote foreign
if(!require(foreign)) install.packages("foreign")
#> Carregando pacotes exigidos: foreign
# Carregue o pacote foreign no RStudio
library(foreign)


  1. Agora, você já possui o pacote foreign instalado e carregado. Vamos importar o arquivo de nome {NINDINET.dbf} para o ambiente do R, armazenando este banco de dados no objeto {dados_sinan}. Lembre-se que para este curso, os dados do Estado de Rosas são fictícios.

Observe e replique os comandos do script abaixo em seu RStudio:

# Carregando arquivo NINDINET.dbf no objeto "dados_sinan"
# Utilizando o argumento "as.is = TRUE" para transformar os dados em caracteres
dados_sinan <- read.dbf(file = 'Dados/NINDINET.dbf', as.is = TRUE)


  1. Pronto, já instalamos, carregamos e armazenamos o banco de dados no objeto {dados_sinan}. Agora, vamos visualizar as primeiras linhas deste banco de dados no R utilizando a função head(), digite-a em seu RStudio e acompanhe os outputs, conforme códigos abaixo:
# Com o comando 'head' visualize as primeiras linhas
# presentes na tabela de dados NINDINET.dbf
head(dados_sinan)
#>   NU_NOTIFIC TP_NOT ID_AGRAVO CS_SUSPEIT IN_AIDS CS_MENING DT_NOTIFIC SEM_NOT
#> 1    7671320      2      A509         NA      NA        NA 2012-04-11  201215
#> 2    0855803      2       W64         NA      NA        NA 2010-09-17  201037
#> 3    8454645      2       X58         NA      NA        NA 2010-10-19  201042
#> 4    3282723      2       A90         NA      NA        NA 2008-04-14  200816
#> 5    9799526      2       B19         NA      NA        NA 2011-06-20  201125
#> 6    7275624      2       A90         NA      NA        NA 2008-02-12  200807
#>   NU_ANO SG_UF_NOT ID_MUNICIP ID_REGIONA ID_UNIDADE DT_SIN_PRI SEM_PRI
#> 1   2012        61     610213         NA     256100 2012-04-05  201214
#> 2   2010        61     610213         NA     180142 2010-09-09  201036
#> 3   2010        61     610213         NA     559191 2010-10-19  201042
#> 4   2008        61     610213         NA     180142 2008-04-11  200815
#> 5   2011        61     610213         NA     480722 2011-04-02  201113
#> 6   2008        61     610213         NA     570404 2008-02-06  200806
#>      DT_NASC NU_IDADE_N CS_SEXO CS_GESTANT CS_RACA CS_ESCOL_N SG_UF ID_MN_RESI
#> 1 2012-04-04       2001       M          6       4         10    33     610213
#> 2 1988-04-23       4022       M          6       1       <NA>    33     610213
#> 3 1971-03-25       4039       M          6      NA       <NA>    33     610250
#> 4 1928-05-29       4079       F          9       4         02    33     610213
#> 5 2002-09-18       4008       M          6       4         01    33     610250
#> 6 1953-08-01       4054       F          9       9         09    33     610213
#>   ID_RG_RESI ID_DISTRIT ID_BAIRRO ID_LOGRADO ID_GEO1 ID_GEO2 CS_ZONA ID_PAIS
#> 1         NA         05       020         NA      NA      NA       1       1
#> 2         NA         05       019         NA      NA      NA       1       1
#> 3         NA         05       020         NA      NA      NA      NA       1
#> 4         NA         01       001         NA      NA      NA       1       1
#> 5         NA         01       001         NA      NA      NA       1       1
#> 6         NA         04       014         NA      NA      NA       1       1
#>   NDUPLIC_N IN_VINCULA  DT_INVEST ID_OCUPA_N CLASSI_FIN CRITERIO TPAUTOCTO
#> 1        NA         NA       <NA>       <NA>         NA       NA        NA
#> 2        NA         NA       <NA>       <NA>         NA       NA        NA
#> 3        NA         NA 2010-10-19       <NA>         NA       NA        NA
#> 4        NA         NA 2008-04-14       <NA>          5        1        NA
#> 5        NA         NA 2011-06-20     999991          1       NA        NA
#> 6        NA         NA       <NA>       <NA>          8       NA        NA
#>   COUFINF COPAISINF COMUNINF CODISINF CO_BAINFC NOBAIINF DOENCA_TRA EVOLUCAO
#> 1      NA         0       NA     <NA>         0     <NA>         NA        1
#> 2      NA         0       NA     <NA>         0     <NA>         NA       NA
#> 3      NA         0       NA     <NA>         0     <NA>         NA       NA
#> 4      NA         0       NA     <NA>         0     <NA>         NA       NA
#> 5      NA         0       NA     <NA>         0     <NA>         NA       NA
#> 6      NA         0       NA     <NA>         0     <NA>         NA       NA
#>   DT_OBITO DT_ENCERRA  DT_DIGITA DT_TRANSUS DT_TRANSDM DT_TRANSSM DT_TRANSRM
#> 1     <NA>       <NA> 2012-11-09       <NA>       <NA> 2012-11-13       <NA>
#> 2     <NA> 2010-10-16 2010-11-17       <NA>       <NA> 2010-11-23       <NA>
#> 3     <NA> 2010-10-19 2011-03-14       <NA>       <NA> 2011-04-12       <NA>
#> 4     <NA> 2008-06-19 2008-04-24       <NA>       <NA> 2010-11-16       <NA>
#> 5     <NA> 2011-06-20 2011-09-14       <NA>       <NA> 2011-09-19       <NA>
#> 6     <NA> 2008-04-14 2008-02-26       <NA>       <NA> 2010-11-16       <NA>
#>   DT_TRANSRS DT_TRANSSE NU_LOTE_V NU_LOTE_H CS_FLXRET FLXRECEBI MIGRADO_W
#> 1       <NA>       <NA>   2012049        NA         0         2        NA
#> 2       <NA>       <NA>   2010047        NA         0         2        NA
#> 3       <NA>       <NA>   2011015        NA         0         2        NA
#> 4       <NA>       <NA>   2010044        NA         0         2        NA
#> 5       <NA>       <NA>   2011038        NA         1         2        NA
#> 6       <NA>       <NA>   2010043        NA         0         2        NA
#>   CO_USUCAD CO_USUALT
#> 1        NA        NA
#> 2        NA        NA
#> 3        NA        NA
#> 4        NA        NA
#> 5        NA        NA
#> 6        NA        NA

Observe no output as linhas e colunas deste banco de dados! Foi fácil, não é mesmo? Nesta etapa concluímos o carregamento da base de dados {NINDINET.dbf} no R. Agora ela já poderá ser utilizada nas análises do Estado de Rosas.


Por padrão, a importação de um arquivo de extensão .dbf transforma as variáveis de texto em fatores (falaremos mais de fatores adiante no texto). Assim, necessitamos incluir o argumento as.is = TRUE na função read.dbf para transformar as variáveis do banco de dados em tipo character (texto).


2.3 Importando arquivos do Microsoft Excel

Comumente utilizamos na vigilância arquivos do Microsoft Excel para manipular alguns bancos de dados que modificamos ou que até mesmo foram criados pelas equipes de vigilância. Você também poderá analisá-los com o R com grande praticidade.

Para este exercício você irá importar o arquivo {sivep_gripe.xlsx} obtido por meio da exportação do banco de dados do SIVEP Gripe (Sistema de Informação da Vigilância Epidemiológica da Gripe). Esse sistema mantem o registro das notificações de casos hospitalizados por Síndrome Respiratória Aguda Grave (SRAG) e, neste exemplo, vamos utilizar dados fictícios do Estado de Rosas. Veja na Figura 13, a estrutura do arquivo aberto em uma planilha do Excel. É um arquivo que possui uma única planilha chamada SIVEPGRIPE.


Figura 13: Banco de dados {sivep_gripe.xlsx}` no Microsoft Excel.


Para importar o arquivo {sivep_gripe.xlsx} para analisá-lo com R, utilizaremos o pacote readxl e a sua função read_excel(). Vamos lá, como fizemos antes, comece instalando e carregando o pacote readxl. Acompanhe o código abaixo e replique os comandos indicados em seu RStudio:

# Esta primeira linha verifica se o pacote está instalado.
# Caso não esteja, irá prosseguir com a instalação
if(!require(readxl)) install.packages("readxl")
#> Carregando pacotes exigidos: readxl
# Carregue o pacote no RStudio
library(readxl)


Com o pacote instalado e carregado, é hora de criar um objeto {dados_sivep} e atribuir a ele a função read_excel(). Mas atenção, necessitaremos incluir os argumentos sheet e skip para arquivos neste formato. Veja como fazer:

  • o argumento skip (pular, em português) é importante para indicar a necessidade de iniciar a importação do arquivo a partir de determinada linha. Por exemplo, se você desejar ler os dados apenas a partir da quarta linha, utilize skip = 3.

  • o argumento sheet é necessário quando queremos indicar para o R qual planilha do arquivo queremos importar, ou seja, neste exemplo devemos definir sheet = 1 para escolher a primeira planilha. Você pode também substituir o número inteiro “1” pelo nome “SIVEPGRIPE” (Figura 11), escrevendo desta forma o argumento: sheet = "SIVEPGRIPE" .

Acompanhe o script abaixo e replique estes códigos no seu RStudio:

# Importando banco de dados sivep_gripe.xlsx
dados_sivep <- read_excel("Dados/sivep_gripe.xlsx",
                    sheet = "SIVEPGRIPE",
                    skip = 0)

# Agora digite a função `head` para visualizando as primeiras linhas da tabela 
head(dados_sivep)
#> # A tibble: 6 × 192
#>   NU_NOTIFIC DT_NOTIFIC SEM_NOT DT_SIN…¹ SEM_PRI SG_UF…² ID_RE…³ CO_RE…⁴ ID_MU…⁵
#>        <dbl> <chr>      <chr>   <chr>    <chr>     <dbl> <lgl>   <lgl>   <lgl>  
#> 1   10039876 04/01/2021 01      03/01/2… 01           61 NA      NA      NA     
#> 2   10042161 04/01/2021 01      03/01/2… 01           61 NA      NA      NA     
#> 3   10043051 04/01/2021 01      03/01/2… 01           61 NA      NA      NA     
#> 4   10045529 05/01/2021 01      03/01/2… 01           61 NA      NA      NA     
#> 5   10046813 06/01/2021 01      03/01/2… 01           61 NA      NA      NA     
#> 6   10047778 04/01/2021 01      04/01/2… 01           61 NA      NA      NA     
#> # … with 183 more variables: CO_MUN_NOT <lgl>, ID_UNIDADE <chr>,
#> #   CO_UNI_NOT <dbl>, NU_CPF <chr>, NM_PACIENT <chr>, CS_SEXO <chr>,
#> #   DT_NASC <chr>, NU_IDADE_N <chr>, TP_IDADE <chr>, COD_IDADE <chr>,
#> #   CS_GESTANT <chr>, CS_RACA <chr>, CS_ETINIA <lgl>, CS_ESCOL_N <chr>,
#> #   NM_MAE_PAC <chr>, NU_CEP <chr>, ID_PAIS <chr>, CO_PAIS <chr>, SG_UF <lgl>,
#> #   ID_RG_RESI <lgl>, CO_RG_RESI <chr>, ID_MN_RESI <chr>, CO_MUN_RES <lgl>,
#> #   NM_BAIRRO <chr>, NM_LOGRADO <chr>, NU_NUMERO <chr>, NM_COMPLEM <lgl>, …


Por padrão a função read_excel() sempre irá identificar, ou seja, lerá a primeira planilha e sua tabela, a partir da primeira linha não-vazia.

Portanto ao chamar a função sem incluir os argumentos sheet e skip, o R utilizará seu padrão de configuração e lhe retornará como resultado a mesma visualização que apresentamos na Figura 11.


2.4 Visualizando os arquivos importados para oR

Mas e se quisermos visualizar as tabelas que armazenamos nos objetos {dados}, {dados_sinan} ou {dados_sivep}?

O R permite que a consulta seja a qualquer momento, isto porque ele armazena cada objeto salvo de uma forma intuitiva e rápida, utilizando o painel Environment (Figuras 14 e 15). Ele está localizado, no canto direito superior do RStudio!

O painel Environment possui duas formas de visualização. Em destaque da Figura 14, perceba o botão marcado como Grid, ele te permitirá a visualização das tabelas armazenadas identificado os objetos por nome, tipo, comprimento (no caso de banco de dados é número de linhas), tamanho (em bytes) e uma breve sumário. Veja:


Figura 14: Tela de apresentação do painel Environment no formato Grid para consulta dos objetos criados.


Já na Figura 15, o modo de visualização é no formato lista (List), onde é possível visualizar as variáveis e o tipo de cada um dos bancos de dados, bastando clicar no botão azul localizado na frente de cada objeto. Veja:


Figura 15: Tela do painel Environment no formato List para consulta dos tipos de dados dos objetos criados.