Mayúsculas y minúsculas en R con tolower() y toupper()
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)