Asignarle un nombre nuevo a una variable en el workflow del {tidyverse} es fácil:
core_data %>%
rename(
test_score = ach, # new name = old name
belonging = sb
)
Básicamente, le dices a R
, el nombre nuevo está a la izquierda de =
y el nombre original está a la derecha. Pero, ¿qué hacer si tienes que asignarle un nombre nuevo a muchas variables a la vez?
Para responder esta pregunta, usemos el siguiente df
imaginario:
new_df_to_rename <-
tibble(
item_1 = rnorm(10),
item_2 = rnorm(10),
item_3 = rnorm(10),
item_4 = rnorm(10),
item_5 = rnorm(10),
item_6 = rnorm(10),
# adding two more variables with different names
other_var_1 = rnorm(10),
other_var_2 = rnorm(10)
)
En este ejemplo, creamos un df
con tibble()
que contiene 8 variables. Cuando los nombres nuevos siguen un patrón común (tienen un prefijo o sufijo común), la tentación es escribir algo como:
new_df_to_rename %>%
rename(
question_1 = item_1,
question_2 = item_2,
question_3 = item_3,
question_4 = item_4,
question_5 = item_5,
question_6 = item_6
)
Esto se ve como una solución simple y efectiva a primera vista. Pero en el largo plazo, no lo es. ¿Qué pasa si la lista de variables a la que quieres cambiarle el nombre crece? ¿O si los nombres originales cambian? En cualquiera de esos casos, tendrías que modificar manualmente cada línea dentro de rename()
, lo que fácilmente puede resultar en errores.
rename_with(): Usa una función para cambiar múltiples nombres.
rename_with()
nos permite usar una función para cambiar los nombres de múltiples variables. Para ello, esta función necesita que le digas cómo quieres cambiar los nombres y qué variables quieres que cambien.
Agrega un prefijo
new_df_to_rename %>%
rename_with(
~paste("abc", .x, sep = "_"),
.cols = starts_with("item")
)
Aquí, rename_with()
le dice a R
:
Usa una función para modificar el nombre de todas las columnas que comienzan con el string item.
En este caso, la función paste()
le da el prefijo abc_ and todas las variables que comienzan con item.
Reemplaza un string
new_df_to_rename %>%
rename_with(
~str_replace(.x, "item", "question"),
.cols = starts_with("item")
)
Aquí, le cambiamos el nombre a las mismas variables. Sin embargo, esta vez reemplazamos el string “item” por “question.”
Remueve un string o character
new_df_to_rename %>%
rename_with(
~str_remove(.x, "_"),
.cols = starts_with("item")
)
De nuevo, le cambiamos el nombre a las mismas variables. Sin embargo, con str_remove()
, removemos el character “_” de cada variable.