-
Notifications
You must be signed in to change notification settings - Fork 7
/
9881-respostas-nse.Rmd
119 lines (84 loc) · 2.38 KB
/
9881-respostas-nse.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
108
109
110
111
112
113
114
115
116
117
118
```{r, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
fig.align = "center"
)
```
## NSE
```{r, message = FALSE, warning = FALSE}
library(dplyr)
library(ggplot2)
```
**1.** Escreva uma função que recebe uma *tibble* e uma coluna qualquer e devolve uma *tibble* sem as linhas contendo `NA` na coluna especificada.
```{r}
tabela_qualquer <- tibble::tibble(
x = c(1, 2, 3, NA, 6),
y = c("a", "b", NA, "d", "e")
)
filtrar_na <- function(tab, coluna) {
tab %>%
filter(!is.na({{coluna}}))
}
filtrar_na(tabela_qualquer, x)
filtrar_na(tabela_qualquer, y)
# string como argumento
filtrar_na <- function(tab, coluna) {
tab %>%
filter(!is.na(.data[[coluna]]))
}
filtrar_na(tabela_qualquer, "x")
filtrar_na(tabela_qualquer, "y")
```
---
**2.** Escreva uma função que recebe uma *tibble* e uma coluna e faz um gráfico de barras da frequência dessa coluna.
```{r}
criar_grafico <- function(tab, coluna) {
tab %>%
count({{coluna}}) %>%
ggplot(aes(x = {{coluna}}, y = n)) +
geom_col()
}
criar_grafico(mtcars, cyl)
# string como argumento
criar_grafico <- function(tab, coluna) {
tab %>%
count(.data[[coluna]]) %>%
ggplot(aes(x = .data[[coluna]], y = n)) +
geom_col()
}
criar_grafico(mtcars, "cyl")
```
---
**3.** Escreva uma função que recebe uma *tibble* e o nome de duas colunas numéricas e faz um gráfico de dispersão dessas colunas.
```{r}
fazer_grafico_disp <- function(tab, col1, col2) {
tab %>%
ggplot(aes(x = {{col1}}, y = {{col2}})) +
geom_point()
}
fazer_grafico_disp(mtcars, mpg, wt)
# string como argumento
fazer_grafico_disp <- function(tab, col1, col2) {
tab %>%
ggplot(aes(x = .data[[col1]], y = .data[[col2]])) +
geom_point()
}
fazer_grafico_disp(mtcars, "mpg", "wt")
```
---
**4.** Escreva uma função que recebe uma *tibble*, o nome de uma coluna categótica e o nome de uma coluna numérica e devolva uma tabela com a média da coluna numérica para cada categoria da coluna categórica.
```{r}
calcular_media <- function(tab, col_grupo, col_num) {
tab %>%
group_by({{col_grupo}}) %>%
summarise(media = mean({{col_num}}, na.rm = TRUE))
}
calcular_media(mtcars, cyl, mpg)
# string como argumento
calcular_media <- function(tab, col_grupo, col_num) {
tab %>%
group_by(.data[[col_grupo]]) %>%
summarise(media = mean(.data[[col_num]], na.rm = TRUE))
}
calcular_media(mtcars, "cyl", "mpg")
```