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