-
Notifications
You must be signed in to change notification settings - Fork 7
/
9845-respostas-forcats.Rmd
110 lines (77 loc) · 3 KB
/
9845-respostas-forcats.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
```{r, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
fig.align = "center"
)
imdb <- readr::read_rds("assets/data/imdb.rds")
```
## O pacote forcats
```{r, message = FALSE, warning = FALSE}
library(dplyr)
library(forcats)
library(ggplot2)
```
**1.** Qual a diferença nos fatores criados com os códigos abaixo?
```{r}
fator1 <- as.factor(c("c", "a", "z", "B"))
fator2 <- forcats::as_factor(c("c", "a", "z", "B"))
```
A função do R base `as.factor()` ordena os níveis do fator em ordem alfabética. A função `as_factor()` do pacote `forcats` ordena os níveis do fator na ordem que eles aparecem no vetor.
---
**2.** Ordene os níveis do fator `frutas` conforme a sua preferência, isto é, as que você mais gosta primeiro e as que você menos gosta por último.
```{r}
frutas <- as.factor(c("maçã", "banana", "mamão", "laranja", "melancia"))
frutas
# preferência do Willy
lvls_reorder(frutas, c(4, 5, 1, 3, 2))
```
---
**3.** Com base no vetor `series`, resolva os itens a seguir.
```{r}
series <- as.factor(c("Game of Thrones", "How I Met your Mother", "Friends", "Lost", "The Office", "Breaking Bad"))
```
**a.** Ordene os níveis do vetor `series` conforme a sua preferência, isto é, as que você mais gosta primeiro e as que você menos gosta por último.
```{r}
levels(series)
# preferência do Willy
series <- lvls_reorder(series, c(6, 5, 1, 3, 2, 4))
```
**b.** Junte ao vetor `series` o vetor `novas_series` a seguir, reordenando os níveis para manter a sua ordem de preferência.
```{r}
novas_series <- as.factor(c("Stranger Things", "The Boys", "Queen's Gambit"))
series <- series %>%
fct_c(novas_series)
levels(series)
series <- lvls_reorder(series, c(1:7, 9, 8))
levels(series)
```
**c.** Renomeie o níveis do vetor criado no item (b) para os nomes em Português das séries. Mantenha o mesmo nome caso não haja tradução.
```{r}
series %>%
fct_recode(
"A Guerra dos Tronos" = "Game of Thrones",
"Como Eu Conheci Sua Mãe" = "How I Met your Mother",
"A Química do Mal" = "Breaking Bad",
"O Gambito da Rainha" = "Queen's Gambit"
)
```
---
**4.** Ordene as categorias do eixo y do gráfico abaixo para que os pontos no eixo x fique em ordem crescente.
```{r}
mtcars %>%
tibble::rownames_to_column("modelo") %>%
mutate(modelo = fct_reorder(modelo, mpg)) %>%
ggplot(aes(x = mpg, y = modelo)) +
geom_point()
```
---
**5.** Utilize a base `dados::casas` para fazer um gráfico de barras mostrando as vizinhanças (coluna `vizinhanca`) com casas mais caras (segundo a coluna `venda_valor`). O gráfico deve conter as 9 vizinhanças mais frequentes e as demais devem ser agrupadas em uma categoria chamada `Outras vizinhanças`.
```{r}
dados::casas %>%
mutate(vizinhanca = fct_lump_n(vizinhanca, 9, other_level = "Outras vizinhanças")) %>%
group_by(vizinhanca) %>%
summarise(venda_valor = mean(venda_valor, na.rm = TRUE)) %>%
mutate(vizinhanca = fct_reorder(vizinhanca, venda_valor)) %>%
ggplot(aes(x = venda_valor, y = vizinhanca)) +
geom_col()
```