Manipulação de dados: uma introdução à coleção de pacotes Tidyverse no R
O que é o Tidyverse?
Olá pessoal! Hoje vamos falar sobre uma coleção de pacotes da linguagem R chamado Tidyverse. Essa coleção de pacotes é uma poderosa ferramenta para manipulação, exploração e visualização de dados. Os principais pacotes são:
readr:
para importar dados;tidyr:
para transformar o data frame;tibble:
auxilia na visualização de dados;dplyr:
para manipulação de dados;stringr:
útil para dados do tipo sting;ggplot2:
para criar representações gráficas;purr:
para programação funcional;forcats:
para manipular fatores.
Esse post tem como objetivo percorrer por algumas funcionalidades desses pacotes e proporcionar uma visão geral sobre manipulação de dados. Para isso, vamos seguir uma lógica de instalar os pacotes, importar os dados, realizar algumas etapas de manipulação e limpeza dos dados e, por fim, gerar gráficos. Para isso, faço o downloand dos dados que serão usados como exemplo. Faça o download clicando aqui!
É importante lembrar que os dados são hipotéticos. Além disso, vale destacar que esses dados simulam as seguintes informações sobre a epidemiologia da Dengue: ano da ocorrência, o gênero do paciente, a raça do paciente, o diagnóstico, e o tratamento.
Para instalar o Tidyverse
, abra o R e digite o seguinte comando no terminal:
install.packages("tidyverse")
Após a instalação precisamos carregar os pacotes para iniciar a manipulação dos dados. Então digite o seguinte comando:
library(tidyverse)
Agora precisamos ler nosso arquivo de dados, que nesse caso é um arquivo csv (comma-seperated values). Para isso, vamos usar o pacote readr
e a função read_csv()
. Vale lembrar que a função read_()
é a função que vai permitir fazer o input de qualquer tipo de dado, seja ele no formato csv, xml, txt, ou outro formato. Após você fazer o download do arquivo, você vai digitar o seguinte comando:
data <- read_csv('data.csv')
Quando realizamos esse comando, além da função de importar os dados, ela também retorna o nome das colunas do data frame e o tipo de varíavel de cada coluna, veja abaixo:
> data <- read_csv('data.csv')
── Column specification ────────────────────────────────────────────────────────────────────
cols(Ano = col_double(),
Genero = col_character(),
Raça = col_character(),
Diagnostico = col_character(),
Doença_tratada = col_character())
Após lermos nosso arquivo csv, podemos, também, ver o conteúdo do arquivo usando a função head()
do pacote tibble
. Ao digitar head(data.frame(data))
no seu terminal, você poderá ver o nome das colunas que o data frame possui, bem como as primeiras linhas da tabela, veja abaixo:
head(data.frame(data))
Ano Genero Raça Diagnostico Doença_tratada
1 2012 Masculino parda Positivo Sim
2 2012 Masculino parda Positivo Não
3 2012 Masculino parda Positivo Não
4 2012 Masculino parda Não realizado Não
5 2012 Masculino parda Positivo Não
6 2012 Masculino ignorada Não realizado Não
Um passo importante na manipulação de dados é saber quantos dados estão faltando nas colunas, ou seja, saber se existe alguma célula na coluna que não possui informação. Nesse caso, fazemos uma contagem de NA
através do seguinte comando: colSums(is.na(data))
. Esse comando retorna a seguinte contagem:
> colSums(is.na(data))
Ano Genero Raça Diagnostico Doença_tratada
0 3 16 18 22
Ou seja, podemos ver que nas colunas Gênero, Raça, Diagnóstico e Doença_tratada existem alguns NAs. Se tratando de análise de dados, o interessante seria desconsiderar as linhas que possuem alguma informação faltante. Pra excluir essas linhas podemos usar a função filter()
do pacote dplyr
, usando o seguinte comando:
data %>% filter(data != NA)
Para sabermos a ocorrência de cada varíavel, podemos usar a função group_by()
e count()
do pacote dplyr
. Por exemplo, para sabermos a quantidade de diagnósticos feitos, discriminado por tipo de diagnóstico, podemos usar o seguinte comando:
data %>%
group_by(data$Diagnostico) %>%
count()
Esse comando nos retornará os seguintes valores: para diagnósticos positivos tiveram 441, 43 negativos e 274 não realizado. Veja o resultado abaixo:
> data %>% group_by(data$Diagnostico) %>%
count()# A tibble: 4 x 2
# Groups: data$Diagnostico [4]
`data$Diagnostico` n
<chr> <int>
1 Não realizado 274
2 Negativo 43
3 Positivo 441
Esse mesmo comando de contagem da variável “Diagnóstico” pode ser feito para as demais varíaveis, você só precisa substituir o nome da variável na argumentaçãodata$
.
Agora que fizemos uma limpeza nos dados, podemos criar representações gráficas para poder visualizar os dados. Vamos usar o pacote ggplot2
para criar gráfico da quantidade de diagnósticos positivos, negativos e não realizados. Esse pacote permite criar diversas formas de representação, caso você tenha enteresse em ver todas as possibilidade que esse pacote permite, você pode acessar a galeria de gráficos em: https://www.r-graph-gallery.com/ggplot2-package.html.
Para a construção do gráfico olhe o código abaixo.
plot <- ggplot(data=data, aes(x=Diagnostico, y=n)) +
geom_bar(stat="identity", fill="steelblue")+
geom_text(aes(label=n), vjust=1.6, color="white", size=3.5)+
theme_minimal()
O gráfico gerado foi:
Nesse post conseguimos abordar um pouco dos principais pacotes do Tidyverse
, desde a leitura de dados, manipulação e geração de representações gráficas. Como essa ferramenta possui muitas funções interessantes, no próximo post sobre o Tidyverse
iremos explorar as outras funcionalidade e outras formas de organização de dados.