alt text

GET00183 - Visualização de Dados

Jony Arrais Pinto Junior

Em muitas situações práticas do dia a dia, precisamos transformar nossas análises em documentos, relatórios, apresentaçoes ou até mesmo painéis interativos de alta qualidade.

No R, o R Markdown é a ferramenta que irá nos ajudar a criar estes documentos. Mas antes de falarmos sobre o R Markdown, iremos discutir um pouco sobre o Markdown.

1 - Markdown

Desenvolvido em 2004 por John Gruber e Aaron Swartz para simplificar a estruturação de um texto, o Markdown é uma linguagem de marcação, isto é, não é uma linguagem de programação. As linguagens de marcação, de uma forma geral, nos dizem como algo deve ser entendido, mas não têm capacidade de processamento e execução de funções. Sendo assim, o Markdown pode ser visto como um sistema de formatação aberto que torna a escrita e a leitura mais simples.

Por exemplo, uma das linguagens de marcação mais usadas é o HTML. Ela apenas diz como uma página web está estruturada, mas não executa nenhum processamento. O Markdown, da mesma forma, apenas informa como um documento está estruturado.

Podemos citar como uma das grandes vantagens do Markdown, a sua simplicidade e a possibilidade de utilização de uma linguagem comum para a criação de vários tipos de documentos (vários mesmo). Por exemplo, um mesmo código Markdown pode ser convertido para LaTeX (gera pdf’s), HTML, docx etc. Entretanto, para tal, é necessário um conversor, que lê um código em Markdown e, considerando a escolha do output desejado, converte o arquivo para a linguagem desejada. Isto ficará mais claro com os exemplos que serão discutidos ao longo deste material.

2 - R Markdown

O R Markdown é a possibilidade de executarmos scripts em R (além de outras linguagens) e incorporá-los a um arquivo Markdown (extensão .md). O responsável pela execução dos “pedaços” (chunk) de códigos é o pacote knitr que gerará um arquivo .md com os códigos e seus resultados. Na sequência, o pandoc, que é um conversor, converte-o para a linguagem desejada, gerando os arquivos nos formatos escolhidos (.html, .docx, .pdf, .odt).

Com R Markdown, é possível:

  • Compilar um documento em um relatório com diferentes formatos de saída (PDF, HTML e Word).
  • Produzir slides para apresentações.
  • Criar painéis interativos, com layouts atraentes e que se adaptam à tela do usuário.
  • Criar relatórios interativos com Shiny.
  • Escrever artigos científicos ou livros.
  • Criar blogs ou sites.

2.1 - Primeiros passos no R Markdown

Instale o pacote knitr. Após a instalação, no Rstudio, acesse os menus File > New File > R Markdown… e clique em OK para criar um novo documento R Markdown com formato HTML. Você verá a seguinte janela:

Figura 1: Criando um primeiro R Markdown em HTML.

Figura 1: Criando um primeiro R Markdown em HTML.

A janela acima permite que seja definido um título, o autor, a data e o formato na qual o arquivo será produzido. Se formos produzir o arquivo em PDF ou em word é preciso verificar se possuímos os pré-requisitos indicados. Após clicar em ok, Você verá o seguinte documento:

Figura 2: Arquivo padrão do R Markdown.

Figura 2: Arquivo padrão do R Markdown.

A figura acima trás os três componentes básicos de um documento R Markdown: YAML, chunks e o texto.

Figura 3: YAML.

Figura 3: YAML.

Os Metadados, escritos no cabeçalho entre o par de três traços (—), são conhecidos como YAML.

O YAML é o responsável por setar as configurações dos documentos. Basicamente, estamos informando qual é o título do documento, a data de criação, o nome do autor e o tipo de output que desejamos. No exemplo acima, estamos definido como output html_document, é possível incluir ainda outras formatações como tamanhos das figuras, numerações de seções, entre outros.

Se quiséssemos um arquivo no formato Word (.docx), o output poderia ser modificado para word_document, se quiséssemos um arquivo no formato PDF, o output poderia ser modificado para pdf_document. Cada formato possui um conjunto de opções disponíveis. Nesse caso, é importante olhar-se a página de cada formato disponível na documentação do RMarkdown.

Figura 4: Texto

Figura 4: Texto

Na figura acima, é mostrado como o texto (partes em branco no exemplo) se mistura com o código de markdown. Esse código markdown, quando convertido, gerará a formatação desejada. Na próxima seção, detalharemos o que cada marcação faz.

Figura 5: Chunck

Figura 5: Chunck

Os Code Chunks (partes nos blocos em cinza, chamados de chunks) seguem a sintaxe da linguagem especificada no cabeçalho do bloco (por padrão é R). Eles são pedaços de código em R que podem ser executados para gerar resultados que serão incorporados ao documento.

Você pode inserir um chunk manualmente ou com o atalho CTRL + ALT + I. Dentro de {} é possível incluir uma série de opções relacionadas à execução do código. Manualmente, um chunk de código é criado por um par de três aspas, como em ```{r}, onde r indica a linguagem do código. No exemplo acima, está sendo criado um gráfico. Abaixo, falaremos sobre algumas dessas opções.

Após a criação de um documento, o passo seguinte é realizar a renderização do mesmo. A forma mais simples é feita por meio do botão knit, disponível na interface do RStudio.

Renderizando no R Markdown.

Renderizando no R Markdown.

Renderize o arquivo criado! Avalie o arquivo criado. Existe alguma diferença entre os dois chuncks com análises no arquivo?

2.2 - Sintaxe

Abaixo encontram-se os principais elementos de sintaxe do R Markdown. Vocês perceberão que vários são autoexplicativos. Para alguns, faremos alguns comentários:

Cabeçalhos

# Cabeçalho de primeiro nível
## Cabeçalho de segundo nível
### Cabeçalho de terceiro nível

O resultado em um documento com output definido como html_document seria:

Cabeçalho de primeiro nível

Cabeçalho de segundo nível

Cabeçalho de terceiro nível

Estilo de texto

*Itálico* e **Negrito**

Itálico e Negrito

Código processado no texto:

A média dos valores é `r mean(c(2,4,3,1))`.

A média dos valores é 2.5.

Código no texto:

A função `mean(x)` calcula a média do vetor x.

A função mean(x) calcula a média do vetor x.

Imagens:

![](GET.png)

Listas não ordenadas:

* Item a
* Item b
    + Subitem b1
    + Subitem b2
  • Item a
  • Item b
    • Subitem b1
    • Subitem b2

Listas ordenadas:

1. Item 1
2. Item 2
3. Item 3
    i. Item 3a
    ii. Item 3b
  1. Item 1
  2. Item 2
  3. Item 3
    1. Item 3a
    2. Item 3b

Tabelas:

——–: indica que a Coluna 1 está alinhada à direita. :————: indica que a coluna está centralizada. Alguns pacotes do R fornecem funções para a geração de tabelas a partir de data.frames e matrizes. Veja:

País      | Número de medalhas de ouro Tokyo 2021
-------------: | :-------------:
USA  | 39
China  | 38
Brasil | 7
Fonte: COI.
País Número de medalhas de ouro em Tokyo 2021
USA 39
China 38
Brasil 7

Fonte: COI.

Ou dentro de um chunck crie o seguinte código.

library(tibble)
pais = c("USA","China","Brasil")
ouro = c(39,38,7)
knitr::kable(tibble(pais, ouro), align = 'cc')
pais ouro
USA 39
China 38
Brasil 7

Equação:

Modelo de regressão linear simples: $y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.$

Modelo de regressão linear simples: \(y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.\)

Modelo de regressão linear simples: $$y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.$$

Modelo de regressão linear simples: \[y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.\]

2.3 - Opções de chunck

Os chunks de códigos ({r, …}) possuem uma série de argumentos que manipulados apropriadamente nos rendem diferentes saídas, isto é, podemos omitir o código, podemos omitir o resultado do código, entre outras. Elencaremos aqui as principais. Para a lista completa, veja este link.

Opção Valor Padrão Descrição
eval TRUE Indica se o código deve ser executado
include TRUE Indica se o código deve ser exibido no documento final. Os resultados não serão apresentados.
collapse FALSE Indica se o código e os resultados do chunk devem ser colapsados em um bloco único.
echo FALSE Indica se o código será exibido no documento final. Os resultados serão apresentados.
error TRUE Indica se mensagens de erros serão exibidas.
message TRUE Indica se mensagens geradas pelo código serão exibidas.
warning TRUE Indica se avisos gerados pelo código serão exibidos.
fig.cap NULL Título de gráfico referente ao chunk.
fig.height 7 Altura para gráficos criados pelo código (em polegadas).
fig.width 7 Largura para gráficos criados pelo código (em polegadas).

Atividade: Crie um R Markdown e explique o processo de criação de um gráfico dependente do tempo usando o ggplot2.

Atividade: Crie um relatório descrevendo o comportamento do número de vendas (total e por semestre) nos bairros de recife. Além disso examine graficamente a existência de relação das vendas (total e por semestre) com o percentual investigo em panfletagem. Comente os resultados. Não devem aparecer códigos no relatório criado.