No blog da Curso-R, colaborei com três posts que apresentam dicas para fazer tabelas, gráficos e relatórios em R. Leia os posts completos através dos links a seguir:
5 Dicas para formatar melhor suas tabelas
Agora seguimos para as dicas!
Primeiro vamos carregar o pacote tidyverse
:
O próximo passo é carregar a base que utilizaremos como exemplo: a base de filmes do IMDB.
imdb <-
read_delim(
"https://raw.githubusercontent.com/curso-r/202010-r4ds-1/master/dados/imdb2.csv",
";",
escape_double = FALSE,
trim_ws = TRUE
)
Exemplo 1: Ordenar, formatar dinheiro e nomear as colunas
No exemplo a seguir, primeiramente vamos selecionar as variáveis que representam o nome e o orçamento dos filmes (com a função select()
). É interessante ordenar a tabela segundo alguma variável, para facilitar a leitura. No exemplo a seguir, vamos ordenar pelo orçamento de forma decrescente utilizando a função arrange(desc(variavel))
.
Vamos selecionar apenas as primeiras linhas da base, para facilitar a apresentação neste post (utilizando a função head()
), e salvar em um objeto chamado filmes_orcamento
(que usaremos nos códigos a seguir).
filmes_orcamento <- imdb %>%
select(titulo, orcamento) %>%
arrange(desc(orcamento)) %>%
head()
filmes_orcamento
# A tibble: 6 × 2
titulo orcamento
<chr> <dbl>
1 Pirates of the Caribbean: At World's End 300000000
2 John Carter 263700000
3 Tangled 260000000
4 Spider-Man 3 258000000
5 The Dark Knight Rises 250000000
6 Avengers: Age of Ultron 250000000
Para variáveis que representam dinheiro, é possível usar a função scales::dollar()
para que os valores fiquem formatados como dinheiro (e fiquem mais legíveis!).
# A tibble: 6 × 2
titulo orcamento
<chr> <chr>
1 Pirates of the Caribbean: At World's End $300,000,000
2 John Carter $263,700,000
3 Tangled $260,000,000
4 Spider-Man 3 $258,000,000
5 The Dark Knight Rises $250,000,000
6 Avengers: Age of Ultron $250,000,000
A tabela anteiror foi apresentada igual a um código que aparece como retorno no console do R, e isso não fica legal em um relatório. Existem diversas formas de apresentar tabelas, mas neste exemplo utilizaremos a função knitr::kable()
1. Além disso, é comum que o nome das variáveis estejam escritas com letras minúsculas, sem acentuação, etc (por exemplo: orcamento
). Para que a tabela fique melhor formatada, podemos renomear o nome das colunas usando o argumento col.names
da função knitr::kable()
, informando um vetor com os novos nomes para as colunas da tabela.
imdb %>%
select(titulo, orcamento) %>%
arrange(desc(orcamento)) %>%
mutate(orcamento = scales::dollar(orcamento)) %>%
head() %>%
knitr::kable(col.names = c("Título do filme", "Orçamento"))
Título do filme | Orçamento |
---|---|
Pirates of the Caribbean: At World’s End | $300,000,000 |
John Carter | $263,700,000 |
Tangled | $260,000,000 |
Spider-Man 3 | $258,000,000 |
The Dark Knight Rises | $250,000,000 |
Avengers: Age of Ultron | $250,000,000 |
A tabela ficou mais fácil de ser lida. O que achou do resultado?
Exemplo 2: Arredondar valores e ordenar categorias
No exemplo a seguir, vamos calcular a nota média dos filmes na base do IMDB para cada classificação etária. Fazemos isso utilizando as funções group_by()
e summarise()
.
Salvaremos o resultado em um objeto chamado nota_classificacao
(que usaremos nos códigos a seguir).
nota_classificacao <- imdb %>%
group_by(classificacao) %>%
summarise(nota_media_imdb = mean(nota_imdb, na.rm = TRUE))
nota_classificacao
# A tibble: 4 × 2
classificacao nota_media_imdb
<chr> <dbl>
1 A partir de 13 anos 61.8
2 A partir de 18 anos 64.6
3 Livre 62.6
4 Outros 66.3
O primeiro ponto interessante para arrumar são os valores da variável nota_media_imdb
, arredondando os valores para que não apareça as casas decimais. Para melhorar a apresentação, podemos usar a função round()
(utilizada para arredondar números) junto com a função mutate()
(que altera ou cria novas variáveis). Com o argumento digits
da função round()
, é possível definir quantas casas decimais você quer que o número tenha.
# A tibble: 4 × 2
classificacao nota_media_imdb
<chr> <dbl>
1 A partir de 13 anos 62
2 A partir de 18 anos 65
3 Livre 63
4 Outros 66
Na base que estamos usando de exemplo, a variável classificacao
é uma variável categórica do tipo chr
(character), ou seja, um texto. Por padrão, a ordem utilizada é a alfabética (repare no resultado anterior, primeiro aparecem as classificações que começam com A, depois com L e por último a que começa com O).
Para ordenar essa variável, precisamos transformar ela em um fator. Portanto, usaremos o pacote forcats
, que faz parte do tidyverse
e possui funções para trabalhar com fatores 2.
Usando a função mutate()
com fct_relevel()
(do pacote forcats
), podemos alterar a ordem dos níveis desta variável, passando como argumento:
a variável que queremos transformar em fator e alterar os seus níveis (os
levels
),um vetor com os níveis (
levels
), na ordem que desejamos.
Posteriormente podemos ordenar a variável utilizando a função arrange()
, e teremos como resultado a tabela ordenada de uma forma que faz mais sentido:
nota_classificacao %>%
mutate(nota_media_imdb = round(nota_media_imdb, digits = 0)) %>%
mutate(classificacao = forcats::fct_relevel(
classificacao,
c("Livre",
"A partir de 13 anos",
"A partir de 18 anos",
"Outros")
)) %>%
arrange(classificacao) %>%
knitr::kable(col.names = c("Classificação etária",
"Nota média no IMDB"))
Classificação etária | Nota média no IMDB |
---|---|
Livre | 63 |
A partir de 13 anos | 62 |
A partir de 18 anos | 65 |
Outros | 66 |
Conclusão
Neste post conhecemos os trabalhos premiados no curso de R para Ciência de dados I oferecido em outubro/2020, assim como algumas dicas que surgiram a partir do feedback dos trabalhos.
Nos próximos posts apresentaremos mais algumas dicas sobre gráficos com o pacote ggplot2
e relatórios com o pacote R Markdown
.
E caso você tenha interesse em saber mais sobre os cursos, a página de cursos foi atualizada, e as incrições para os cursos de 2021 já estão abertas!
Notas de rodapé
Outros pacotes que permitem criar tabelas são: DT, reactable, flextable e kableExtra. Essa página também apresenta materiais muito ricos sobre elaboração de tabelas!↩︎
Caso queira saber mais sobre fatores e o pacote
forcats
, recomendo consutar este material da Curso-R.↩︎