13.10 NSE
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.
<- tibble::tibble(
tabela_qualquer x = c(1, 2, 3, NA, 6),
y = c("a", "b", NA, "d", "e")
)
<- function(tab, coluna) {
filtrar_na %>%
tab filter(!is.na({{coluna}}))
}
filtrar_na(tabela_qualquer, x)
## # A tibble: 4 × 2
## x y
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 3 <NA>
## 4 6 e
filtrar_na(tabela_qualquer, y)
## # A tibble: 4 × 2
## x y
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 NA d
## 4 6 e
# string como argumento
<- function(tab, coluna) {
filtrar_na %>%
tab filter(!is.na(.data[[coluna]]))
}
filtrar_na(tabela_qualquer, "x")
## # A tibble: 4 × 2
## x y
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 3 <NA>
## 4 6 e
filtrar_na(tabela_qualquer, "y")
## # A tibble: 4 × 2
## x y
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 NA d
## 4 6 e
2. Escreva uma função que recebe uma tibble e uma coluna e faz um gráfico de barras da frequência dessa coluna.
<- function(tab, coluna) {
criar_grafico %>%
tab count({{coluna}}) %>%
ggplot(aes(x = {{coluna}}, y = n)) +
geom_col()
}
criar_grafico(mtcars, cyl)
# string como argumento
<- function(tab, coluna) {
criar_grafico %>%
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.
<- function(tab, col1, col2) {
fazer_grafico_disp %>%
tab ggplot(aes(x = {{col1}}, y = {{col2}})) +
geom_point()
}
fazer_grafico_disp(mtcars, mpg, wt)
# string como argumento
<- function(tab, col1, col2) {
fazer_grafico_disp %>%
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.
<- function(tab, col_grupo, col_num) {
calcular_media %>%
tab group_by({{col_grupo}}) %>%
summarise(media = mean({{col_num}}, na.rm = TRUE))
}
calcular_media(mtcars, cyl, mpg)
## # A tibble: 3 × 2
## cyl media
## <dbl> <dbl>
## 1 4 26.7
## 2 6 19.7
## 3 8 15.1
# string como argumento
<- function(tab, col_grupo, col_num) {
calcular_media %>%
tab group_by(.data[[col_grupo]]) %>%
summarise(media = mean(.data[[col_num]], na.rm = TRUE))
}
calcular_media(mtcars, "cyl", "mpg")
## # A tibble: 3 × 2
## cyl media
## <dbl> <dbl>
## 1 4 26.7
## 2 6 19.7
## 3 8 15.1