Convertir los elementos de un vector en factores permite una mejor presentación de los resultados, aunque limita la operacionalización de este vector. Por eso se recomienda que este procedimiento se realice al final, siempre y cuando, se tenga que hacer operaciones con los elementos del vector.

FACTORES

Usted cuando realiza una encuesta y pregunta sobre el género, a los encuestados, ellos responden entre masculino y femenino. Pero para que usted lo procese, ya sea en una tabla o un gráfico, lo codifica como números. Ejemplo 1 para masculino y 2 para femenino.

Eso es lo que hace el comando factor(), codifica los elementos del vector para colocarles etiquetas que se convertirán en niveles.

A continuación se muestra un ejemplo similar.

#El vector de género de un salón:

g<-c(1,2,1,2,2,2,2,1,2,1,2,1,
     2,1,2,1,1,2,1,2,1,1,1,2,2)  # Vector de 1 y 2 que representan el género.

# Como quedó el vector que creamos:
g
##  [1] 1 2 1 2 2 2 2 1 2 1 2 1 2 1 2 1 1 2 1 2 1 1 1 2 2

Usted se puede dar cuenta que el vector esta compuesto de unos y dos. Pero si realizas una tabla (se desarrollará una guía completa en próximas presentaciones, aquí sólo se usa en el nivel más básico. Su comando es table()) de estos datos se vería nada presentable:

table(g)
## g
##  1  2 
## 12 13

Por tanto, es primordial el uso de factores.

El comando factor() tiene la siguiente sintaxis:

factor("Vector", "levels =", "labels =")

Donde Vector será el vector que se deseará convertir en factor, levels son los niveles en donde se especificarán los valores numéricos que tomará el factor, y por último, labels es en donde se especifica las etiquetas de los niveles.

Para poder comprenderlo, convertiremos en factor el vector g.

genero<-factor(g,
          levels = c(1,2),
          labels = c("Masculino", "Femenino"))

Como se puede observar se especificó el vector g, los niveles son 1 y 2 y las etiquetas son Masculino y Femenino.

Los resultados se muestran a continuación:

genero
##  [1] Masculino Femenino  Masculino Femenino  Femenino  Femenino  Femenino 
##  [8] Masculino Femenino  Masculino Femenino  Masculino Femenino  Masculino
## [15] Femenino  Masculino Masculino Femenino  Masculino Femenino  Masculino
## [22] Masculino Masculino Femenino  Femenino 
## Levels: Masculino Femenino

En efecto, se ha creado el vector genero que pasó de ser unos y dos para convertirse en masculino y femenino. En la última salida, de estos resultados, se puede observar los niveles que han sido convertidos en Masculino y Femenino.

Si ahora realizamos el comando table() otra vez. Los resultados serán más presentables.

table(genero)
## genero
## Masculino  Femenino 
##        12        13

Pero si usted desea agregar más niveles al ejemplo anterior sólo tendría que agregar en levels y en labels.

Hagamos un ejemplo, en el caso de agregar un nuenvo género, por ejemplo, los “medios”. La codificación sería la siguiente:

n.genero<-factor(g,
          levels = c(1,2,3),
          labels = c("Masculino", "Femenino", "Medios"))

Si se ha podido dar cuenta, se agregó un nivel más, el nivel 3 y el label Medios. Veamos como quedan los resultados.

n.genero           # El factor n.genero
##  [1] Masculino Femenino  Masculino Femenino  Femenino  Femenino  Femenino 
##  [8] Masculino Femenino  Masculino Femenino  Masculino Femenino  Masculino
## [15] Femenino  Masculino Masculino Femenino  Masculino Femenino  Masculino
## [22] Masculino Masculino Femenino  Femenino 
## Levels: Masculino Femenino Medios
# La tabla de n.genero
table(n.genero)
## n.genero
## Masculino  Femenino    Medios 
##        12        13         0

Como se puede ver, ningún elemento de n.genero toma el valor de Medios, ya que el vector g no tenía el elemento 3. Pero si se muestra en los labels, asi que si se modifica el vector g y se agrega elementos con valor 3, se podrá ver elementos que tomen la etiqueta Medios.

Algo interesante de esto y que otros programas no lo hacen es mostrar los elementos nulos de un etiqueta.Es decir, en la tabla se muestra que se tiene 0 Medios.

Ahora se realizará un nuevo ejemplo pero con una base de datos más real.

Usando base de datos real.

Cargaremos la base de datos de la Enaho, pero sólo la columna de nivel educativo (Hasta ahora no hemos visto como agregar base de datos, así que si no comprende como cargarlo no se preocupe, haremos una guía completa en próximas ediciones).

Usted puede descargar esta base de datos del siguiente enlace.

base<-read.csv("F:/educ.csv", header = TRUE)

Veamos como esta compuesta esta base de datos.

View(base)
Vista de la Base de Datos


Como se puede observar es la pregunta p109a de la encuesta ENAHO, que tiene 15621 elementos.

Veamos una tabla de esta base de datos.

table(base)
## base
##    1    2    3    4    5    6    7    8    9   10 
##  560  273 1750 1195 1995 4983  543 1376 1055 1891

El resultado es nada claro, lo que tenemos que hacer es convertir a este vector en factor. Realizaremos este procedimiento, en el siguiente código.

base$p109a<-factor(base$p109a, 
              levels = 1:10, 
              labels = c("Sin Nivel","Inicial","Primaria Incompleta",
                         "Primaria Completa","Secundaria Incompleta",
                         "Secundaria Completa","S.NU. Incompleta",
                         "S.NU. Completa","S.U. Incompleta",
                         "S.U. Completa"))

Primero especificamos el vector que es base$p109a (porque: la base de datos es base pero el vector es p109a, no puedo llamar defrente al vector -escribir p109a-1 ya que es parte de la base de datos. Para llamar al vector se tiene que usar el comando $, lo que se ha hecho es decir de la base de datos base selecciona con $ el vector p109a), los niveles son 10, por eso se especifica 1:10 y las etiquetas son las que se muestran.

Veamos como quedo nuestra base de datos:

View(base)
Vista de la Base de Datos


Como se puede observar todo a quedado codificado y se muestran las etiquetas.

Por último realizaremos una tabla con estos niveles.

table(base)
## base
##             Sin Nivel               Inicial   Primaria Incompleta 
##                   560                   273                  1750 
##     Primaria Completa Secundaria Incompleta   Secundaria Completa 
##                  1195                  1995                  4983 
##      S.NU. Incompleta        S.NU. Completa       S.U. Incompleta 
##                   543                  1376                  1055 
##         S.U. Completa 
##                  1891

¿Aún le parece poco presentable esta tabla? La respuesta más segura es que si. El detalle es que R tiene una interfaz muy sencilla y nada amigable. Pero esto es un punto a favor, ya que, esto permite que la tabla que se generó se pueda exportar en distintos formatos como latex, html, doc, xlsx, entre otros.

En guías posteriores usted verá el potencial de esto, por el momento es prematuro avanzar en lo que concierne a tablas. Aún hay comandos que se tienen que apreender ya que estos nos servirán para llegar a niveles deseados.


  1. Para omitir el comando $ se usa attach a la base de datos con lo cual sólo se podría usar el nombre del vector. Para adjuntar la base de datos se tendría que usar de esta manera attach(base). En la guía de data frame se verá con mayor claridad esto.