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.
NombreModo de viaje
JohnCamión
ShawCoche
SotaventoCiclo
MusanBicicleta
LozyCamión
RiyaCoche
MijCiclo

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:

  1. Spark SQL Dataframe
  2. Tipos de datos R
  3. Base de datos multidimensional
  4. Tubería de datos de AWS

Categoría: