Factor

Un factor es un objeto vectorial utilizado para especificar una clasificación (agrupación) de los componentes de un vector de acuerdo a sus valores únicos. Si bien la aplicación “real” de factores es para formular modelos estadísticos, aquí vemos un ejemplo específico para entender su funcionamiento, prueba el siguiente código:

f1<- rep(1:5, times=4)
factor1 <- factor(f1)
print(factor1)
##  [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
## Levels: 1 2 3 4 5

Los factores representan una forma muy eficiente de almacenar valores de caracteres, porque cada valor de carácter único se almacena solo una vez y los datos en sí se almacenan como un vector de números enteros.

f<-factor(c("rojo", "blanco","azul", "amarillo", "rojo"))
class(f)
## [1] "factor"
f
## [1] rojo     blanco   azul     amarillo rojo    
## Levels: amarillo azul blanco rojo
f[3]
## [1] azul
## Levels: amarillo azul blanco rojo

Para ahondar más en la utilidades de los factores, veamos este ejemplo: Supón que tienes un vector de cadenas de caracteres con las abreviaturas de los estados a los que pertenecen tus 10 vendedores:

estado <- c("SIN", "SON", "DGO", "SIN", "SIN", "BCS", "BCS", "DGO", "SON", "SON")
estadof <- factor(estado)
estadof #Para averiguar los niveles de un factor, se puede usar la función levels()
##  [1] SIN SON DGO SIN SIN BCS BCS DGO SON SON
## Levels: BCS DGO SIN SON

Para continuar con el ejemplo anterior, supongamos que tenemos las ventas de los mismos vendedores en otro vector (en unidades de dinero adecuadamente grandes).

ventas <- c(10, 15, 5, 20, 25, 15, 20, 20, 5, 10)

Para calcular las ventas promedio de la muestra para cada estado, podemos usar la función especial tapply():

vtasprom <-tapply(ventas,estadof,mean)

La función tapply () se uso para aplicar una función, en este caso, mean(), a cada grupo de componentes del primer argumento (ventas), definidos por los niveles del segundo componente (estadof).

Siguiendo con el ejemplo, supón que tenemos clasificados los estados por el monto de ventas histórico, y ese orden es: SIN, SON, BCS y DGO y deseamos que las ventas promedio salgan ordenadas de acuerdo a este ordenamiento. Para hacer esto, necesitamos un factor ordenado, hagámoslo:

estadof2 <- factor(estado, levels = c("SIN", "SON", "BCS", "DGO"), ordered=TRUE)

Pero ahora, supongamos que en lugar de querer conocer las ventas promedio de cada estado queremos saber el número de vendedores para cada estado:

table(estadof2)
## estadof2
## SIN SON BCS DGO 
##   3   3   2   2

Como se puede observar al ejecutar esta última instrucción, table() es una función que sirve para crear tablas/distribuciones de frecuencias.