Eliminar espacios en blanco en R con trimws()

Manipulación de datos con R Manipulación de texto
Eliminar espacios en blanco en R con trimws()

Los datos sin procesar suelen contener espacios en blanco no deseados, como saltos de línea, tabulaciones o “retornos de carro” al principio, al final o a ambos lados de los caracteres. En R, existe una función llamada trimws que simplifica la eliminación de estos espacios en blanco iniciales y finales. Además, ofrece la posibilidad de especificar otras expresiones regulares, lo que permite a los usuarios eliminar cualquier carácter no deseado.

Sintaxis de trimws

La función trimws de R base contiene tres argumentos: el vector de caracteres de entrada (x), el lado en el que eliminar espacios en blanco (which) y la expresión regular de espacios en blanco (whitespace):

trimws(x,                                  # Vector de caracteres
       which = c("both", "left", "right"), # Lado a eliminar. Por defecto es "both" (ambos)
       whitespace = "[ \t\r\n]")           # Expresión regular para espacios en blanco

La función devuelve el vector de caracteres de entrada sin los espacios en blanco especificados.

Eliminar espacios en blanco o caracteres al principio y al final

Por defecto, la función elimina tanto los espacios en blanco iniciales como los finales de una cadena, como se muestra a continuación:

# Cadena de texto con espacios al principio y al final
x <- "  texto   "

# Eliminar espacios
x <- trimws(x)
x
"texto"

La función también puede aplicarse a un vector o a una columna de un data frame:

# Data frame con una columna con espacios
df <- data.frame(x = 1:3, y = c(" gato ", "  pero ", "    caballo "))

# Eliminar espacios
df$y <- trimws(df$y)
df$y
"gato"   "perro"   "caballo"

Ten en cuenta que la función trimws no sólo elimina los espacios en blanco por defecto, sino que también elimina los saltos de línea (\n), los retornos de carro (\r) y las tabulaciones (\t):

# Texto con otros tipos de espacios
x <- " \r texto\t\n"

# Eliminar espacios
x <- trimws(x)
x
"texto"

El argumento whitespace permite especificar los caracteres o expresiones regulares que deben eliminarse. El siguiente ejemplo muestra cómo utilizar este argumento para eliminar las apariciones iniciales y finales del carácter "E":

# Cadena de texto con caracteres al principio y al final
x <- "EEEOtro TextoEE"

# Eliminar espacios
x <- trimws(x, whitespace = "E")
x
"Otro Texto"

Como ya se ha mencionado, es importante tener en cuenta whitespace puede tomar una expresión regular como entrada. En el siguiente ejemplo, se aplica la función trimws para eliminar los caracteres numéricos (0-9) iniciales y finales de la cadena.

# Cadena de texto con números al principio y al final
x <- "2352Texto con números43213"

# Eliminar espacios
x <- trimws(x, whitespace = "[0-9]")
x
"Texto con números"

Eliminar los espacios al principio

Por defecto, la función trimws elimina tanto los espacios iniciales como los finales. Sin embargo, el argumento which ofrece la posibilidad de especificar si se eliminan sólo los espacios en blanco finales o sólo los iniciales. El siguiente ejemplo muestra cómo utilizar este argumento para eliminar exclusivamente los espacios iniciales y conservar los finales con which = "left".

# Texto
x <- "   esto es un texto   "

# Eliminar los espacios al principio
x <- trimws(x, which = "left")
x
"esto es un texto   "

Eliminar los espacios al final

Si quieres eliminar los espacios finales, deberás especificar which = "right". Esta especificación indica que sólo deben eliminarse los espacios al final de la cadena, dejando intactos los espacios al principio.

# Texto
x <- "   esto es un texto   "

# Eliminar los espacios al final
x <- trimws(x, which = "right")
x
"   esto es un texto"

R version 4.3.2 (2023-10-31 ucrt)