Convertir objetos a numérico con as.numeric()

Introducción a R Conceptos básicos de R
La función as.numeric para convertir objetos a numérico

La función as.numeric es una función básica de R que convierte objetos a numérico. En este tutorial aprenderás a convertir objetos a numérico y a comprobar si un objeto es numérico o no.

Sintaxis y argumentos

La sintaxis de la función as.numeric es la siguiente:

as.numeric(x, ...)

La función toma un objeto (x) como argumento, siendo:

  • x: objeto a ser convertido a numérico.
  • …: argumentos adicionales, de ser necesarios.

Uso

Carácter a numérico

Considera que tienes un vector de caracteres que contiene los siguientes números:

x <- c("19", "28", "26")

x
"19" "28" "26"

En este escenario, si quieres realizar operaciones matemáticas recibirás un error como en el ejemplo siguiente, donde intentamos multiplicar el vector por dos:

x <- c("19", "28", "26")

x <- x * 2
Error in x * 2 : non-numeric argument to binary operator

Si conviertes tu vector a numérico entonces ahora R interpretará los valores como números, de modo que podrás realizar operaciones matemáticas con ellos.

x <- c("19", "28", "26")

# Convertir 'x' a numérico
x <- as.numeric(x)
x
19 28 26

Ahora puedes multiplicar los valores y obtener el resultado deseado.

x <- x * 2
x
38 56 52

Si el vector de caracteres contiene cadenas de texto no numéricas y usas las función as.numeric ese elemento se convertirá a NA y R mostrará un mensaje de advertencia diciendo: “NAs introduced by coercion”.

x <- c("19", "28", "26", "A")

# Convertir 'x' a numérico
x <- as.numeric(x)
x
Warning message:
NAs introduced by coercion 
> x
[1] 19 28 26 NA

Factor a numérico

Considera el siguiente factor a modo ilustrativo:

f <- factor(c("3", "14", "15", "93"))

f
3  14 15 93
Levels: 14 15 3 93

Ten en cuenta que los niveles del factor no tienen el mismo orden que el vector de caracteres de entrada.

Si quieres convertir un factor a numérico tendrás que usar la función as.numeric, pero también la función as.character de la siguiente manera:

f <- factor(c("3", "14", "15", "93"))

f <- as.numeric(as.character(f))
f
3 14 15 93

Una alternativa más eficiente para vectores largos es usar el siguiente código:

f <- factor(c("3", "14", "15", "93"))

f <- as.numeric(levels(f))[f]

f

Si quieres convertir un factor al vector original con el mismo orden nunca uses as.numeric(f), ya que no devolverá el vector numérico deseado. Aprende más sobre factores en R.

Lógico a numérico

Considera que tienes un vector lógico como el siguiente:

b <- c(TRUE, FALSE, TRUE, TRUE, FALSE)

b
TRUE FALSE  TRUE  TRUE FALSE

Puedes convertir el vector a numérico con la función as.numeric, que convertirá los TRUE en 1 y los FALSE en 0.

b <- c(TRUE, FALSE, TRUE, TRUE, FALSE)

b <- as.numeric(b)

b
1 0 1 1 0

Comprobar si un objeto es numérico con is.numeric

La función is.numeric resulta útil para comprobar si el tipo de dato de un objeto es numérico o no. Si lo es, la función devolverá TRUE y si no lo es devolverá FALSE.

x <- c("19", "28", "26", "A")

# Comprobar si x es numérico
is.numeric(x) # FALSE

# Convertir 'x' a numérico
x <- as.numeric(x)

# Volvemos a comprobar
is.numeric(x) # TRUE