En R, los factores son como vectores que aceptan valores descriptivos. Por ejemplo, en algún tipo de experimento se pudiera caracterizar el nivel de energía de una batería, con cuatro niveles: vacio, bajo, normal, lleno. Entonces, para 5 sitios o experimentos diferentes, se podrían identificar esos niveles, en esos términos, como sigue:
lleno, lleno, normal, vacio, bajo
Normalmente, en bases de datos o en otras fuentes de información, el manejo típico de estos datos es mediante índices enteros arbitrarios asociados con las categorías o niveles, en este caso. Si suponemos que se asignaran, para el caso del ejemplo, en orden, como sigue: 1=vacio, 2=bajo, 3=normal, 4=lleno, entonces, los 5 experimentos podrían codificarse así:
4, 4, 3, 1, 2
Sucede, muchas veces, que se cuenta con la lista codificada de enteros, y con la tabla o catálogo de los índices, pero no con el factor ya construído. ¿Cómo se puede reconstruir, entonces, un factor de R, a partir de esa información?
Para resolver este problema simularemos una vector de 20 enteros que represente los experimentos, cada uno de los cuales podrá tener cinco diferentes valores: nivelUno, nivelDos, nivelTres, nivelCuatro, nivelCinco.
# Hagamos la lista simulada:
set.seed(18)
ii <- sample(1:5, 20, replace=T)
ii
## [1] 5 4 5 1 1 3 2 3 2 2 4 4 1 2 5 1 3 1 5 1
El primer paso consiste en hacer un factor, a partir de la secuencia previa, en el que los niveles o categorías sean exactamente los números del 1 al 5.
fii <- factor(ii, levels=1:5) # necesario indicar los niveles numericos
fii
## [1] 5 4 5 1 1 3 2 3 2 2 4 4 1 2 5 1 3 1 5 1
## Levels: 1 2 3 4 5
Ahora simplemente, hay que vestir el factor ya creado con las etiquetas correspondientes a los índices:
levels(fii) <- c("nivelUno", "nivelDos", "nivelTres", "nivelCuatro", "nivelCinco")
fii
## [1] nivelCinco nivelCuatro nivelCinco nivelUno nivelUno
## [6] nivelTres nivelDos nivelTres nivelDos nivelDos
## [11] nivelCuatro nivelCuatro nivelUno nivelDos nivelCinco
## [16] nivelUno nivelTres nivelUno nivelCinco nivelUno
## Levels: nivelUno nivelDos nivelTres nivelCuatro nivelCinco
Con esto se concluye el ejemplo.