Convertir objetos a numérico con as.numeric()
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