Skip to content

Commit

Permalink
atualiza praticas
Browse files Browse the repository at this point in the history
  • Loading branch information
jtrecenti committed Mar 13, 2024
1 parent e67cfe8 commit 83ac0ba
Show file tree
Hide file tree
Showing 2 changed files with 284 additions and 2 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ Fora do horário de aula ou monitoria:

## Práticas

| Exemplo |
|:--------|
| Exemplo |
|:------------------------------------------------------------------------------------------------|
| [01-pivotagem-across.R](https://curso-r.github.io/202403-r4ds-2/praticas/01-pivotagem-across.R) |

## Lição de casa

Expand Down
281 changes: 281 additions & 0 deletions praticas/01-pivotagem-across.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,281 @@


library(tidyverse)

da_cao <- tibble::tibble(
Cachorro = c("Bacon", "Dexter", "Zip"),
Semana1 = c(10, 10, 0),
Semana2 = c(4, 4, 0),
Semana3 = c(8, 10, 10),
Semana4 = c(9, 8, 9)
)

# uso básico
da_cao |>
pivot_longer(
c(Semana1, Semana2, Semana3, Semana4)
)

# mudando nome das colunas
da_cao |>
pivot_longer(
c(Semana1, Semana2, Semana3, Semana4),
names_to = "Semana",
values_to = "Nota"
)

# usos + avançados
da_cao |>
pivot_longer(
starts_with("Semana"),
names_to = "Semana",
values_to = "Nota"
)

da_cao |>
pivot_longer(
-Cachorro,
names_to = "Semana",
values_to = "Nota"
)

## parenteses
# readr::parse_number("Semana1")

da_cao |>
pivot_longer(
-Cachorro,
names_to = "Semana",
values_to = "Nota",
names_transform = parse_number
) |>
# não faz parte do escopo do curso
ggplot(aes(x = Semana, y = Nota, colour = Cachorro)) +
geom_line()


## Julio gosta + de coisas explícitas
da_cao |>
pivot_longer(
-Cachorro,
names_to = "Semana",
values_to = "Nota"#,
#names_transform = parse_number
) |>
mutate(Semana = parse_number(Semana))


da_cao_longo <- da_cao |>
pivot_longer(
-Cachorro,
names_to = "Semana",
values_to = "Nota"
)


# agora vamos deixar largo

da_cao_longo |>
pivot_wider(
names_from = Semana,
values_from = Nota
)

da_cao_longo |>
pivot_wider(
names_from = Cachorro,
values_from = Nota
)

da_cao_longo |>
pivot_wider(
names_from = c(Cachorro, Semana),
values_from = Nota
)

da_cao_longo |>
mutate(passou = Nota > 5) |>
pivot_wider(
names_from = Semana,
values_from = c(Nota, passou)
)

# uso básico
da_cao |>
pivot_longer(
c(Semana1, Semana2, Semana3, Semana4)
) |>
pivot_wider()

# praticando pivotagem
da_cao_longo |>
filter(Cachorro != "Bacon" | Semana != "Semana4")

da_cao_longo |>
filter(!(Cachorro == "Bacon" & Semana == "Semana4"))


da_cao_longo |>
filter(!(Cachorro == "Bacon" & Semana == "Semana4")) |>
mutate(Nota = as.character(Nota)) |>
pivot_wider(
names_from = "Semana",
values_from = "Nota",
values_fill = "doente"
)

da_cao_longo |>
filter(!(Cachorro == "Bacon" & Semana == "Semana4")) |>
# transformar coluna nota em texto e depois pivot wider
mutate(Nota = as.character(Nota)) |>
pivot_wider(
names_from = "Semana",
values_from = "Nota",
values_fill = "doente"
)


# across ------------------------------------------------------------------

library(dados)

mtcars
mtcarros

mtcarros |>
group_by(cilindros) |>
summarise(
# media
media_mpg = mean(milhas_por_galao),
media_cilindrada = mean(cilindrada),
media_cavalos_forca = mean(cavalos_forca),
# mediana
mediana_mpg = median(milhas_por_galao),
mediana_cilindrada = median(cilindrada),
mediana_cavalos_forca = median(cavalos_forca)
)

mtcarros |>
group_by(cilindros) |>
summarise(
across(
c(milhas_por_galao, cilindrada, cavalos_forca),
mean,
.names = "media_{.col}"
)
)

mtcarros |>
group_by(cilindros) |>
summarise(
across(
.cols = c(milhas_por_galao, cilindrada, cavalos_forca),
.fns = list("media" = mean, "mediana" = median),
.names = "{.fn}_{.col}"
)
)

# uso mais profissional
funcoes_sumarizacao <- list(
"media" = mean,
"mediana" = median,
"desvio_padrao" = sd,
"min" = min,
"max" = max
)
mtcarros |>
group_by(cilindros) |>
summarise(
across(
.cols = c(milhas_por_galao, cilindrada, cavalos_forca),
.fns = funcoes_sumarizacao
)
)


pinguins |>
glimpse()

dividir_por_10 <- function(x) {
x / 10
}

dividir_por_10(3.9)

pinguins |>
mutate(
across(
.cols = c(comprimento_bico, profundidade_bico),
.fns = dividir_por_10
)
)

pinguins |>
mutate(
across(
.cols = ends_with("bico"),
.fns = dividir_por_10
)
)

# convertendo valores das colunas
pinguins |>
mutate(
across(
.cols = c(especie, ilha, sexo),
.fns = as.character
)
)

# convertendo valores das colunas
# mais nutella
pinguins |>
mutate(
across(
.cols = where(is.factor),
.fns = as.character
)
)

is.factor(factor("aaa"))

is.factor(123)

pinguins |>
summarise(
across(
.cols = where(is.numeric),
.fns = mean
)
)

media_sem_na <- function(x) {
mean(x, na.rm = TRUE)
}

pinguins |>
summarise(
across(
.cols = where(is.numeric),
.fns = media_sem_na
)
)

pinguins |>
summarise(
across(
.cols = where(is.numeric),
.fns = mean, na.rm = TRUE
)
)

# + avançada
pinguins |>
summarise(
across(
.cols = where(is.numeric),
.fns = \(x) mean(x, na.rm = TRUE)
)
)

# obs: \() é SINONIMO de function()

0 comments on commit 83ac0ba

Please sign in to comment.