Me gusta la función de cambio de nombre de plyr rename. Recientemente comencé a usar dplyr y me preguntaba si hay una manera fácil de cambiar el nombre de las variables usando una función de dplyr, que sea tan fácil de usar como la de plyr rename.
118

rename(TheDataFrame,OldVarName=NewVarName)pero consigoError: Unknown variables: NewVarName.y no entiendo por qué.dplyr::rename(iris, petal_length = Petal.Length).iris <- dplyr::rename(iris, petal_length = Petal.Length)y rename () no maneja nombres de variables con espacios, por ejemplo,dplyr::rename(iris, petal_length = "petal length")produce un error.setNames()si está reemplazando los nombres de las columnas al por mayor:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))La próxima versión de dplyr admitirá una versión mejorada de select que también incorpora el cambio de nombre:
fuente
changesse exporta (o debería ser)plyrla función de cambio de nombre usa"old"="new"mientras quedplyrusanew=oldque la mantiene consistente con el resto de las funciones dplyr. Personalmente, no lo considero un problema: te acostumbras rápidamente a las cosas nuevas, especialmente cuando significa una aceleración significativa en el procesamiento de tus datos.select. No estoy seguro de que tengamos algo que diga seleccionar todas las variables y, por cierto, cambiar el nombre de esta columna.selecten que se comporta realmente? Pondría en votación unadplyrmanera fácil de mantener todas las variables y simplemente cambiar el nombre de una o dos. :) Por ahora seguiré cargandoplyry usandorename.mtcars %>% select(matches(".*"),disp2=disp). Me encantaría una solución más parsimoniosa, pero esto funciona y conserva todas las columnas (aunque no su orden).dispno se duplica.De hecho, puede utilizar
plyrlarenamefunción de 'como parte de lasdplyrcadenas. Creo que cada función que a) toma adata.framecomo primer argumento yb) devuelve adata.framefunciona para el encadenamiento. Aquí hay un ejemplo:ACTUALIZACIÓN: La versión actual de
dplyradmite el cambio de nombre directamente como parte de laselectfunción (consulte la publicación de Romain Francois más arriba). Sin embargo, la afirmación general sobre el uso de funciones que no son dplyr como parte dedplyrcadenas sigue siendo válida yrenamees un ejemplo interesante.fuente
No aparece como una función en dplyr (todavía): http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
La función siguiente funciona (casi) igual si no desea cargar tanto plyr como dplyr
Editar: El comentario de Romain produce lo siguiente (tenga en cuenta que la función de cambios requiere dplyr .1.1)
fuente
mtcarsetc. pero bastante dramático si se trata de datos importantes. chequedplyr:::changes(mtcars, dat)Aunque no es exactamente un cambio de nombre,
dplyr::select_all()se puede utilizar para cambiar el formato de los nombres de las columnas. Este ejemplo reemplaza espacios y puntos con un guión bajo y convierte todo a minúsculas:fuente
Intenté usar dplyr :: rename y me sale un error:
En su lugar, utilicé la función base R que resulta ser bastante simple y efectiva:
fuente