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
changes
se exporta (o debería ser)plyr
la función de cambio de nombre usa"old"="new"
mientras quedplyr
usanew=old
que 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.select
en que se comporta realmente? Pondría en votación unadplyr
manera fácil de mantener todas las variables y simplemente cambiar el nombre de una o dos. :) Por ahora seguiré cargandoplyr
y 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).disp
no se duplica.De hecho, puede utilizar
plyr
larename
función de 'como parte de lasdplyr
cadenas. Creo que cada función que a) toma adata.frame
como primer argumento yb) devuelve adata.frame
funciona para el encadenamiento. Aquí hay un ejemplo:ACTUALIZACIÓN: La versión actual de
dplyr
admite el cambio de nombre directamente como parte de laselect
funció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 dedplyr
cadenas sigue siendo válida yrename
es 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
mtcars
etc. 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