Lectura de la base de datos:

library(TeachingSampling)
data(Lucy)
table(Lucy$Zone)
## 
##   A   B   C   D   E 
## 307 727 974 223 165

Organizar el factor por la frecuencia más frecuente de zona

library(forcats)
table(fct_infreq(Lucy$Zone))
## 
##   C   B   A   D   E 
## 974 727 307 223 165

Organizar el factor por la frecuencia menos frecuente de zona

table(fct_rev(fct_infreq(Lucy$Zone)))
## 
##   E   D   A   B   C 
## 165 223 307 727 974

Crear factor otro

x <- factor(rep(LETTERS[1:9], times = c(40, 10, 5, 27, 1, 1, 1, 1, 1)))
table(x)
## x
##  A  B  C  D  E  F  G  H  I 
## 40 10  5 27  1  1  1  1  1

Ordenar en el orden de aparación

table(fct_inorder(Lucy$Level))
## 
##  Small Medium    Big 
##   1576    737     83

Reorganizar factores por índices

Debe haber tantos índices como niveles allá (en este caso tres)

f <- factor(c("a", "b", "c", "b", "a", "a", "c"))
table(lvls_reorder(f, 3:1)) 
## 
## c b a 
## 2 2 3

Crear nuevos factores

lvls_expand(f, c("a", "b", "c", "d"))
## [1] a b c b a a c
## Levels: a b c d
x <- factor(rep(LETTERS[1:9], times = c(40, 10, 5, 27, 1, 1, 1, 1, 1)))
table(x)
## x
##  A  B  C  D  E  F  G  H  I 
## 40 10  5 27  1  1  1  1  1
x2 <- fct_lump(x)
table(x)
## x
##  A  B  C  D  E  F  G  H  I 
## 40 10  5 27  1  1  1  1  1

Crea una categoría otros:

x2a <- fct_lump(x, other_level = "Otro" )
table(x2a)  
## x2a
##    A    D Otro 
##   40   27   20
prop.table(table(x)) * 100
## x
##         A         B         C         D         E         F         G 
## 45.977011 11.494253  5.747126 31.034483  1.149425  1.149425  1.149425 
##         H         I 
##  1.149425  1.149425

Conserva las categorías que tengan más que una proporción especifica y el resto las agrupa en la categoría otros:

x3 <- fct_lump(x, p = 0.05, other_level = "Otro" )
table(x3)  
## x3
##    A    B    C    D Otro 
##   40   10    5   27    5
prop.table(table(x3))
## x3
##          A          B          C          D       Otro 
## 0.45977011 0.11494253 0.05747126 0.31034483 0.05747126
x3a <- fct_lump(x, p = 0.1, other_level = "Otro" )
table(x3a)  
## x3a
##    A    B    D Otro 
##   40   10   27   10
prop.table(table(x3a))
## x3a
##         A         B         D      Otro 
## 0.4597701 0.1149425 0.3103448 0.1149425

Preservar los tres valores más comunes

table(x)
## x
##  A  B  C  D  E  F  G  H  I 
## 40 10  5 27  1  1  1  1  1
x4 <- fct_lump(x, n = 3, other_level = "Otro" )
table(x4)  
## x4
##    A    B    D Otro 
##   40   10   27   10
prop.table(table(x4))
## x4
##         A         B         D      Otro 
## 0.4597701 0.1149425 0.3103448 0.1149425

Preservar los tres factores menos comunes

x5 <- fct_lump(x, n = -3, other_level = "Otro" )
table(x5)  
## x5
##    E    F    G    H    I Otro 
##    1    1    1    1    1   82
prop.table(table(x5))
## x5
##          E          F          G          H          I       Otro 
## 0.01149425 0.01149425 0.01149425 0.01149425 0.01149425 0.94252874

Recodificar variables categóricas:

x <- factor(c("manzana", "naranja", "uvas", "cebolla", 
              "papa"))

fct_recode(x, frutas = "manzana", frutas = "naranja", frutas ="uvas",
              verduras = "cebolla", verduras = "papa")
## [1] frutas   frutas   frutas   verduras verduras
## Levels: verduras frutas