Mayúsculas y minúsculas en R con tolower() y toupper()

Manipulación de datos con R Manipulación de texto
Mayúsculas y minúsculas en R con tolower() y toupper() y chartr()

R proporciona un conjunto de funciones de casefolding, es decir, para transformar textos a mayúsculas y minúsculas, como toupper, tolower, casefold. Además revisaremos la función chartr, utilizada para realizar transformaciones específicas de cadenas de texto.

Mayúsculas con toupper

toupper es la función de R base para transformar cualquier cadena de texto o vector de caracteres a mayúsculas. El siguiente ejemplo ilustra cómo transformar una cadena de texto a mayúsculas:

x <- "texto de ejemplo"

# Transformar a mayúsculas con toupper()
x <- toupper(x)
x
"TEXTO DE EJEMPLO"

Columna y nombres de columna a mayúsculas

Es posible convertir columnas de caracteres, nombres de columnas, nombres de filas de un data frame u otros objetos a mayúsculas con toupper. Por ejemplo, para transformar una columna de caracteres de minúsculas a mayúsculas basta con asignar el nuevo valor a la columna original, como se muestra a continuación.

# Data frame de muestra
df <- data.frame(x = 1:5, y = c("a", "b", "c", "d", "e"))

# Transformar columna a mayúsculas
df$y <- toupper(df$y)
df
  x y
1 1 A
2 2 B
3 3 C
4 4 D
5 5 E

Para los nombres de columna o fila, deberás aplicar la función toupper a los nombres de columna o fila del data frame.

# Data frame de muestra
df <- data.frame(x = 1:5, y = c("a", "b", "c", "d", "e"))

# Transformar nombres de columna a mayúsculas
colnames(df) <- toupper(colnames(df))
df
  X Y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e

Primera letra en mayúscula

Cuando se trabaja con nombres o datos similares es habitual querer que la primera letra sea mayúscula. Para conseguirlo puedes extraer la primera y el resto de letras, convertir la primera letra a mayúscula y finalmente pegar todo junto:

# Vector de muestra
x <- c("john", "Kate", "Stan")

# Transformar la primera letra en mayúscula
x <- paste0(toupper(substr(x, 1, 1)), substring(x, 2))
x
"John" "Kate" "Stan"

En este ejemplo, substr(x, 1, 1) extrae la primera letra de cada nombre, toupper la convierte a mayúsculas y, a continuación, se utiliza paste0 para combinar la primera letra mayúscula con el resto del nombre obtenido con substring(x, 2).

Una alternativa al ejemplo anterior es utilizar la función str_to_title de stringr, pero esta función se comporta de forma diferente, ya que str_to_title transformará todas las letras a minúsculas excepto la primera.

# install.packages("stringr")
library(stringr)

# Vector de muestra
x <- c("jOhn", "kaTE", "StaN")

# Transforma a "title case"
# solo la primera letra en mayúscula
# aunque el input contenga otras mayúsculas
x <- stringr::str_to_title(x)
x
"John" "Kate" "Stan"

Minúsculas con tolower

La función utilizada para transformar vectores de caracteres en minúsculas se llama tolower. El siguiente ejemplo muestra el uso básico de esta función:

x <- "TEXTO DE EJEMPLO"

# Transformar a minúscula con tolower()
x <- tolower(x)
x
"texto de ejemplo"

Columna y nombres de columna a minúsculas

La función tolower también puede aplicarse a columnas de caracteres de un data frame, como se muestra a continuación:

# Data frame de muestra
df <- data.frame(x = 1:5, y = c("A", "B", "C", "D", "E"))

# Transformar la columna a minúsculas
df$y <- tolower(df$y)
df
  x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e

Además, si quieres transformar los nombres de las columnas de mayúsculas a minúsculas, puedes hacer lo siguiente:

# Data frame de muestra
df <- data.frame(COL1 = 1:5, COL2 = c("A", "B", "C", "D", "E"))

# Transform column names to lower case
colnames(df) <- tolower(colnames(df))
df
  X Y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e

La función casefold

La función casefold es un wrapper de toupper y tolower ‘proporcionado por compatibilidad con S-PLUS’, lo que significa que puede usarse para transformar textos de mayúsculas a minúsculas y viceversa sólo con una función. Por defecto, la función convertirá a minúsculas:

# Texto de ejemplo
x <- "TEXTO DE MUESTRA"

# Transformar a minúscula
x <- casefold(x)
x
"texto de muestra"

Pero la función proporciona un argumento llamado upper que puede establecerse a TRUE para transformar de minúsculas a mayúsculas.

# Texto de ejemplo
x <- "texto de muestra"

# Transformar a mayúscula
x <- casefold(x, upper = TRUE)
x
"TEXTO DE MUESTRA"

La función chartr

La última función que vamos a revisar es chartr, que permite realizar transformaciones de caracteres. Se puede utilizar para cambiar un conjunto de caracteres (old) por otro (new) de los datos de entrada (x).

El siguiente ejemplo ilustra cómo transformar las letras "s" dentro de "strings" a "S":

chartr(old = "s", new = "S", x = "strings")
"StringS"

Ten en cuenta que los argumentos old y new pueden tomar varios caracteres y transformarán todas las coincidencias individuales:

chartr(old = "STR", new = "str", x = "STRINGS")
"strINGs"

Por último, cabe mencionar que esta función no se limita al casefolding (transformación en mayúsculas o minúsculas), ya que también permite sustituir los caracteres de la cadena de texto de entrada por otros:

chartr(old = "str", new = "ABC", x = "strings")
"ABCingA"

R version 4.3.2 (2023-10-31 ucrt)