Dados wide x long
Exercícios
Diretrizes gerais:
- Baixe o arquivo .Rmd e o .csvb e abra no RStudio.
Siga as diretrizes da atividade.
Rode o arquivo .Rmd por meio do ícone
knitr
Salve o .Rmd e submeta-o por meio do email renataoliveira@gmail.com.
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)