lunes, 27 de abril de 2020

R en Español: Función para convertir caracteres en números o destring

Hay ocasiones en las que tenemos números almacenados como palabras o strings.

Por ejemplo, si mi conjunto de datos es como el siguiente:
> df1 <- c("1", "2", "3", "4", "5")
> df2 <- c("6", "7", "8", "9", "10")
no seré capaz de sumar df1 + df2. Obtendré este error:
> df1+df2
Error in df1 + df2 : non-numeric argument to binary operator
Esto se debe a que los números en df1 y df2 no son reconocidos como números, sino como palabras. ¿Por qué? Pues al estar entre comillas, R los reconoce como palabras.

Para convertirlos en números necesitamos usar la función destring:
destring <- function(x,keep="0-9.-") {
  return( as.numeric(gsub(paste("[^",keep,"]+",sep=""),"",x)) )
}
De modo en el que al aplicarla a nuestros conjuntos de datos df1 y df2, obtenemos:
> df1 <- destring(df1)
> df2 <- destring(df2)
> df1+df2
[1]  7  9 11 13 15
Así, df1 y df2 se convirtieron en números con los que se pueden realizar operaciones sin obtener el error non-numeric argument to binary operator.

La función destring fue tomada del siguiente post en Stackoverflow: https://stackoverflow.com/questions/9739518/r-cleaning-up-a-character-and-converting-it-into-a-numeric/9740635#9740635

No hay comentarios:

Publicar un comentario

R en Español: Obtener nombres de renglones con funcion row.names

Si deseo obtener los nombres de los renglones de mi dataframe puedo utilizar la función row.names de la paquetería básica de R y RStudio. ...