Convertir factor a numérico con la función as.numeric en R

Jinku Hu 30 enero 2023
  1. Utilice la función as.numeric para convertir factor a numérico en R
  2. Combine las funciones as.character y as.numeric para convertir factor a numérico en R
Convertir factor a numérico con la función as.numeric en R

Este artículo demostrará varios métodos sobre cómo convertir factor a numérico en R.

Utilice la función as.numeric para convertir factor a numérico en R

Las funciones as se utilizan generalmente para convertir tipos de datos a otro tipo explícitamente. El proceso de conversión se llama coerción en la terminología R y denota el concepto de conversión presente en otros lenguajes de programación. Cuando llamamos a la función as.logical, intenta forzar el argumento pasado al tipo lógico. De manera similar, as.character y as.numeric convierten los argumentos dados a los tipos correspondientes. Observe que cualquier número (excepto cero) convertido al tipo lógico representa un valor TRUE, incluso negativos.

> as.logical(31)
[1] TRUE

> as.logical(-31)
[1] TRUE

> as.character(31)
[1] "31"

> as.numeric(FALSE)
[1] 0

> as.numeric(TRUE)
[1] 1

R también implementa reglas de coerción de tipos implícitas, que son necesarias cuando se realizan operaciones aritméticas en los vectores que constan de diferentes tipos. Como se demuestra en el siguiente fragmento de código, si un vector atómico contiene una cadena de caracteres, todos los demás elementos también se convierten en la cadena. Si el vector incluye elementos mixtos de lógica, números y cadenas, se convierten en tipos de cadenas. Finalmente, cuando el vector contiene números y lógica, estos últimos se convierten en números.

> v1 <- c(1, "two", 3, 4, 5, 6)

> typeof(v1)
[1] "character"

> v1 <- c(T, "two", 3, 1, F, T)

> typeof(v1)
[1] "character"

> v1 <- c(1, T, 3, F, 5, 6)

> typeof(v1)
[1] "double"

Al convertir un factor en numérico, es importante tener en cuenta que as.numeric solo devolverá la representación entera subyacente, que en su mayoría no tiene sentido y no se corresponde con los niveles de los factores. Se puede examinar cómo se almacena internamente un objeto de factor utilizando la función unclass. Observe que el factor f2 tiene un índice de 2 1 2 3, que generalmente se devuelve usando la llamada as.number como se muestra en el siguiente ejemplo de código:

> f2 <- factor(c(3, 2, 3, 4))

> f2
[1] 3 2 3 4
Levels: 2 3 4

> f2.n <- as.numeric(f2)

> unclass(f2)
[1] 2 1 2 3
attr(,"levels")
[1] "2" "3" "4"

> f2.n
[1] 2 1 2 3

Combine las funciones as.character y as.numeric para convertir factor a numérico en R

Los niveles de factor se pueden convertir al tipo entero combinando las funciones as.character y as.numeric. as.character devuelve niveles de factor como cadenas de caracteres. Entonces podemos llamar a la función as.numeric para convertir la cadena en números.

> f2 <- factor(c(3, 2, 3, 4))

> f2.c <- as.character(f2)

> f2.c
[1] "3" "2" "3" "4"

> f2.c <- as.numeric(as.character(f2))

> f2.c
[1] 3 2 3 4
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Factor