Introdução ao forcats


Instalação (se necessária) e Carregamento

# Carregando o pacote
library(forcats)
library(ggplot2)

Tipos de Funções no forcats

O forcats é um pacote bastante simples. Basicamente, ele é composto por funções de apenas dois tipos:


Principais Funções do forcats que utilizam fct_

  1. fct_relevel(): Reordena níveis manualmente;
  2. fct_reorder(): Reordena níveis com base em outra variável;
  3. fct_infreq(): Reordena níveis por frequência;
  4. fct_lump(): Agrupa níveis menos frequentes em “outros”;
  5. fct_recode(): Renomeia níveis;
  6. fct_collapse(): Combina níveis em grupos;
  7. lvls_reorder: Reordenar os níveis de um fator;
  8. lvls_revalue(): Renomeando Avaliações; 9.lvls_expand:Expandindo níveis de um fator. —

Exemplo 1: Reordenando Níveis com fct_relevel()

library(forcats)
dados <- data.frame(
  categoria = factor(c("Lucas C", "Verônica", "Samantha", "Lucas C", "Verônica")),
  valor = c(10, 20, 30, 15, 25)
)
dados$categoria <- fct_relevel(dados$categoria, "Lucas C", "Samantha", "Verônica")
dados$categoria
## [1] Lucas C  Verônica Samantha Lucas C  Verônica
## Levels: Lucas C Samantha Verônica

Exemplo 2: Reordenando por Frequência com fct_infreq()

# Dados com categorias
dados <- data.frame(
  categoria = factor(c("Sarah", "Sarah", "Jonas", "Brenda", "Brenda", "Brenda", "Renata"))
)

# Reordenando por frequência
dados$categoria <- fct_infreq(dados$categoria)
dados$categoria
## [1] Sarah  Sarah  Jonas  Brenda Brenda Brenda Renata
## Levels: Brenda Sarah Jonas Renata
# Visualização

Resultado: Os níveis são ordenados do mais frequente (“Brenda”) ao menos frequente (“Renata”).


Exemplo 3: Agrupando Níveis com fct_lump()

# Dados com várias categorias
dados <- data.frame(
  categoria = factor(c("A", "A", "A", "B", "C", "C", "D", "E", "F"))
)

# Agrupando níveis menos frequentes
dados$categoria <- fct_lump(dados$categoria, n = 2)
dados$categoria
## [1] A     A     A     Other C     C     Other Other Other
## Levels: A C Other

Exemplo 4: Reordenando por outra variável com fct_reorder()

# Dados de exemplo
dados <- data.frame(
  categoria = factor(c("A", "B", "C", "D")),
  valor = c(10, 30, 20, 40)
)

# Reordenando por valor (decrescente)
dados$categoria <- fct_reorder(dados$categoria, dados$valor, .desc = TRUE)
dados$categoria
## [1] A B C D
## Levels: D B C A
# Visualização

Exemplo 5: Alterando Níveis com fct_recode

fator <- factor(c("Ellie", "Joel", "Tommy", "Abby"))

# Alterando apenas uma
fct_recode(fator, carol = "Ellie")
## [1] carol Joel  Tommy Abby 
## Levels: Abby carol Joel Tommy
# Alterando todas
fct_recode(fator,
           Carol = "Ellie",
           Pedro = "Joel",
           Pedro = "Tommy",
           Carol = "Abby")
## [1] Carol Pedro Pedro Carol
## Levels: Carol Pedro

Exemplo 6: Agrupando níveis com fct_collapse

# Dados de exemplo
dados <- data.frame(
  genero = factor(c("Ação", "Aventura", "Drama", "Romance", "Comédia", "Ação", "Romance", "Aventura")),
  bilheteria = c(100, 150, 80, 90, 120, 110, 95, 140)
)

# Agrupando níveis com fct_collapse
dados$genero <- fct_collapse(dados$genero,
                             "Ação/Aventura" = c("Ação", "Aventura"),
                             "Drama/Romance" = c("Drama", "Romance"),
                             "Outros" = "Comédia")
print(dados$genero)
## [1] Ação/Aventura Ação/Aventura Drama/Romance Drama/Romance Outros       
## [6] Ação/Aventura Drama/Romance Ação/Aventura
## Levels: Ação/Aventura Outros Drama/Romance

Exemplo 7: Reordenando Níveis com lvls_reorder

fator <- factor(c("casado", "viuvo", "solteiro", "divorciado"))
fator
## [1] casado     viuvo      solteiro   divorciado
## Levels: casado divorciado solteiro viuvo
lvls_reorder(fator, c(3, 1, 2, 4))
## [1] casado     viuvo      solteiro   divorciado
## Levels: solteiro casado divorciado viuvo

Exemplo 8: Renomeando Avaliações com lvls_revalue()

dados <- data.frame(
  Notas = factor(c("Aprovado", "Final", "Aprovado", "Reprovado", "Final")),
  pontuacao = c(70, 55, 90, 50, 75)
)

dados$Notas <- lvls_revalue(dados$Notas, c("A", "B", "C"))
print(dados$Notas)
## [1] A B A C B
## Levels: A B C

Exemplo 9: Expandindo níveis de um fator com a função lvls_expand

dados <- data.frame(
  nota = factor(c("A", "B", "C", "B", "A")),
  frequencia = c(2, 3, 1, 2, 1)
)
dados$nota <- lvls_expand(dados$nota, c("A", "B", "C", "D", "F"))
print(dados$nota)
## [1] A B C B A
## Levels: A B C D F

Vantagens do forcats


Conclusão