Trabalhos premiados do curso R para Ciência de Dados I + Dicas !

  • Escrito por Beatriz Milz e William Amorim em Divulgação
  • 03/12/2020

Na última edição do curso de R para Ciência de dados I, realizada em outubro de 2020, apresentamos para as pessoas alunas como trabalho final a tarefa de realizar uma análise estatística (descritiva) e comunicar os resultados utilizando um relatório produzido em R Markdown. Como sugestão, as pessoas poderiam utilizar a base de filmes do IMDB para realizar a análise, porém eram livres para escolher outros temas de interesse também.

Assim como nas últimas edições do curso, para motivar as pessoas alunas, resolvemos premiar os melhores trabalhos com vagas em qualquer um dos nossos cursos. Neste post apresentamos o objetivo deste tipo de avaliação, além dos trabalhos premiados da turma de maio de 2020.

Este post será um pouco diferente deste: primeiro apresentaremos os trabalhos premiados, e então baseado nos feedbacks que escrevemos sobre os trabalhos, apresentaremos algumas dicas para visualizações de dados e relatórios com RMarkdown. O conteúdo foi dividido para que o post não ficasse muito extenso, então neste post as dicas serão sobre formatação de tabelas!

Trabalhos premiados

  • Luísa Böck: O trabalho da Luisa é uma análise sobre a série The Office, e tanto a análise dos dados, a parte estética e o texto ficaram muito legais! Para quem gosta da série, é uma oportunidade para aprender mais sobre ela! Confira o trabalho neste link.

  • André Oliveira: O trabalho do André é uma análise utilizando a base de filmes do IMDB. O trabalho também ficou muito legal: a análise dos dados, a contextualização e a parte estética foram bem trabalhadas! Confira o trabalho neste link.

Parabéns, Luísa e André!

5 Dicas para formatar melhor suas tabelas

Agora seguimos para as dicas!

Primeiro vamos carregar o pacote tidyverse:

library(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 x 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!).

filmes_orcamento %>% 
  mutate(orcamento = scales::dollar(orcamento)) 
## # A tibble: 6 x 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 x 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.

nota_classificacao %>%
  mutate(nota_media_imdb = round(nota_media_imdb, digits = 0))
## # A tibble: 4 x 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!


  1. 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!↩︎

  2. Caso queira saber mais sobre fatores e o pacote forcats, recomendo consutar este material da Curso-R.↩︎

comments powered by Disqus