[Lenguajes: R]
Problema
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?
Solució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.
No hay comentarios.:
Publicar un comentario