Introducción a los factores en R
En R, podemos procesar diferentes tipos de variables. También podemos asumir el factor como un tipo de variable que toma solo un número limitado de valor asignado; Dicha variable también se conoce como variable categórica.
Ventajas de un factor
- Puede almacenar tanto enteros como cadenas
1. En el caso de los enteros
data = c(5, 6, 6, 6, 7, 5, 7, 6, 7, 5, 6, 7)
factor_data = factor(data)
factor_data
Salida
2. En el caso de cuerdas
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"))
y
Salida
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"), levels = c("Car", "Bike", "Cycle", "Truck", "Train"))
y
Salida
- Muy útil cuando las columnas tienen un número limitado de valores únicos.
Nombre | Modo de viaje |
John | Camión |
Shaw | Coche |
Sotavento | Ciclo |
Musan | Bicicleta |
Lozy | Camión |
Riya | Coche |
Mij | Ciclo |
Aquí tenemos un número limitado de valores únicos en la columna 2.
- Ayuda a rectificar las cadenas con errores tipográficos (errores de escritura).
¿Cómo crear un factor en R?
Podemos crear factores usando factores de código ().
Explore más sobre factor ().
factor(x = character(), levels, labels = levels, ordered = is.ordered(x))
Dónde,
X es un conjunto de datos categóricos. Como ya discutimos, debería ser una cadena o enteros.
Los niveles son un conjunto de valores que puede tomar X. Los niveles contienen todos los valores únicos disponibles en la columna (x).
Las etiquetas como el nombre sugieren el etiquetado de los datos disponibles en X.
Ordenado determina si los niveles deben ordenarse en un orden particular.
Ejemplo 1
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike"))
y
Salida:
Ejemplo # 2
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"), levels = c("Car", "Bike", "Cycle", "Truck", "Train"))
y
Salida:
En el ejemplo 2 podemos ver que también podemos definir "niveles".
Ahora veamos más sobre factores usando Str (y).
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"), levels = c("Car", "Bike", "Cycle", "Truck", "Train"))
y
Salida:
str(y)
Salida:
Se ve claramente que los factores se almacenan como vectores enteros y los niveles se almacenan como un vector de caracteres, y los elementos individuales se almacenan realmente como índices.
- Ahora veremos cómo acceder a los componentes de un factor
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"), levels = c("Car", "Bike", "Cycle", "Truck", "Train"))
y
Salida:
y(2) # helps to access 2nd element
Salida:
x(c(3, 4)) # helps to access 3rd and 4th element
Salida
x(-1) # access all except 1st element
Salida:
- Ahora veremos cómo modificar un factor.
y = factor(c("Bike", "Car", "Cycle", "Truck", "Car", "Bike", "Cycle", "Truck", "Car", "Bike"), levels = c("Car", "Bike", "Cycle", "Truck", "Train"))
y
Salida:
y(3) = "Truck" #modifty third element
y
Salida
Agregando a un factor:
y(10) = "Car"
y
Salida:
Tenga en cuenta que no podemos asignar nada en un factor que no sea parte de los niveles.
y(4) = "Plane"Warning message:In `(<-.factor`(`*tmp*`, 4, value = "Plane") : invalid factor level, NA generated
Salida:
En este ejemplo, podemos ver que "Plano" no es parte de nuestro nivel, por lo tanto, recibimos un mensaje de advertencia que dice que "Plano" es un nivel de factor no válido.
Convertir datos en un factor
Los datos están disponibles en abundancia, y cada vez es difícil escribir una palabra completa en el código, por lo que para esto, primero convertiremos los datos en un factor y luego convertiremos el factor en un carácter o número según nuestra conveniencia.
Ahora trabajemos en algunos datos reales. Donde tenemos 50 observaciones y los solicitantes proporcionan su dirección de trabajo. Al igual que John viaja hacia el norte por sus deberes laborales o Sam viaja hacia la dirección sur por sus deberes laborales.
direction <- c("West", "East", "North", "West", "South", "East", "South", "East", "South", "East", "South", "West", "South", "East", "South", "East", "South", "South", "West", "East", "South", "West", "South", "East", "South", "East", "South", "West", "East", "South", "West", "South", "East", "South", "East", "South", "South", "West", "South", "West", "East", "South", "West", "South", "East", "South", "East", "South", "South", "West")
direction.factor = factor(direction)
direction.factor
Salida:
Niveles: Este Norte Suroeste
Ahora, si queremos convertir el factor en un vector de caracteres:
Usaremos el código as.character ().
as.character(direction.factor)
Salida:
O queremos convertir el factor en un vector numérico:
Usaremos el código as.numeric ().
as.numeric(direction.factor)
Salida:
Artículos recomendados
Esta es una guía de Factores en R. Aquí discutimos la introducción, Ventajas de un factor, Cómo crear un factor en R junto con las Salidas. También puede consultar nuestros otros artículos sugeridos para obtener más información:
- Spark SQL Dataframe
- Tipos de datos R
- Base de datos multidimensional
- Tubería de datos de AWS