Lab 4.2

Dados wide x long

Exercícios

Diretrizes gerais:

  1. Baixe o arquivo .Rmd e o .csvb e abra no RStudio.

Arquivo .Rmd

Arquivo .csv

  1. Siga as diretrizes da atividade.

  2. Rode o arquivo .Rmd por meio do ícone knitr

  3. Salve o .Rmd e submeta-o por meio do email .


Exercício 1.

Rode o código para gerar o histograma a seguir:

# library
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Build dataset with different distributions
data <- data.frame(
  type = c(rep("variable 1", 1000), rep("variable 2", 1000)),
  value = c(rnorm(1000), rnorm(1000, mean = 0, sd = 5))
)

# Represent it
p <- data %>%
  ggplot(aes(x=value, fill=type)) +
    geom_histogram( color="#e9ecef", alpha=0.6, position = 'identity') +
    scale_fill_manual(values=c("#69b3a2", "#404080")) +
    theme_minimal() +
    labs(fill="")

p
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Transformação com dados numéricos

# get first observation for each Species in iris data -- base R
mini_iris <- iris[c(1, 51, 101), ]

mini_iris %>% gather(key = "flower_att", value = "measurement", -Species)
##       Species   flower_att measurement
## 1      setosa Sepal.Length         5.1
## 2  versicolor Sepal.Length         7.0
## 3   virginica Sepal.Length         6.3
## 4      setosa  Sepal.Width         3.5
## 5  versicolor  Sepal.Width         3.2
## 6   virginica  Sepal.Width         3.3
## 7      setosa Petal.Length         1.4
## 8  versicolor Petal.Length         4.7
## 9   virginica Petal.Length         6.0
## 10     setosa  Petal.Width         0.2
## 11 versicolor  Petal.Width         1.4
## 12  virginica  Petal.Width         2.5

Transformando dados de wide para long para representar dois dados iguais de recortes distintos no mesmo gráfico - dados categóricos

dados_bh <- read_delim("dados_aluno.csv", 
    delim = ";", escape_double = FALSE, trim_ws = TRUE)
# "Na unha!!!!"
antes <- dados_bh %>% 
  select(internet_compras_antes, genero, escolaridade) %>% 
  mutate(dado = "antes") %>% 
  rename("internet" = "internet_compras_antes")

depois <- dados_bh %>% 
  select(internet_compras_depois, genero, escolaridade) %>% 
  mutate(dado = "durante") %>% 
  rename("internet" = "internet_compras_depois")

data_plot <- data.frame(rbind(antes, depois))

##### Alternativa usando a função gather para gerar o data_plot - "elegante"
data_plot_long <- dados_bh %>% 
  gather(key = "dado", value = "antes_depois", -genero, -escolaridade)

Gráficos

ggplot(data_plot_long) + 
  geom_bar(aes(x = antes_depois, fill = dado), position = "dodge") +
  coord_flip() +
  facet_wrap(~ genero)

ggplot(data_plot_long) + 
  geom_bar(aes(x = antes_depois, fill = dado), position = "dodge") +
  coord_flip() +
  facet_grid(escolaridade ~ genero)

Extra: função “case_when” dentro do mutate

data_plot_long <- dados_bh %>% 
  gather(key = "dado", value = "antes_depois", -genero, -escolaridade) %>% 
  mutate(dado = case_when(dado == 'internet_compras_antes' ~ 'antes',
                          dado == 'internet_compras_depois' ~ 'depois'))   
ggplot(data_plot_long) + 
  geom_bar(aes(x = antes_depois, fill = dado), position = "dodge") +
  coord_flip() +
  facet_wrap(~ genero)

Previous
Next