J'aime la fonction de changement de nom de plyr rename
. J'ai récemment commencé à utiliser dplyr et je me demandais s'il existe un moyen simple de renommer des variables en utilisant une fonction de dplyr, qui est aussi facile à utiliser que celle de plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
mais j'obtiensError: Unknown variables: NewVarName.
et je ne comprends pas pourquoi.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
et rename () ne gère pas les noms de variables avec des espaces, par exemple,dplyr::rename(iris, petal_length = "petal length")
produit une erreur.setNames()
si vous remplacez les noms de colonnes en gros:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
La prochaine version de dplyr prendra en charge une version améliorée de select qui comprend également le changement de nom:
la source
changes
est exporté (ou il devrait l'être)plyr
la fonction de renommage de s utilise"old"="new"
alors que lesdplyr
utilisations lanew=old
maintiennent cohérente avec le reste des fonctions de dplyr. Personnellement, je ne vois pas cela comme un problème - vous vous habituez rapidement à de nouvelles choses surtout quand cela signifie une accélération significative de votre traitement de données.select
. Pas sûr que nous ayons quelque chose qui dit de sélectionner toutes les variables et d'ailleurs renommer cette colonne.select
se comporte réellement? Je voterais pour undplyr
moyen facile de conserver toutes les variables et d'en renommer une ou deux. :) Pour l'instant, je vais continuer à chargerplyr
et à utiliserrename
.mtcars %>% select(matches(".*"),disp2=disp)
. J'adorerais une solution plus parcimonieuse mais cela fonctionne et préserve toutes les colonnes (mais pas leur ordre).disp
ne se duplique pas.Vous pouvez en fait utiliser
plyr
larename
fonction de dans le cadre dedplyr
chaînes. Je pense que chaque fonction que a) prend adata.frame
comme premier argument et b) renvoie adata.frame
fonctionne pour le chaînage. Voici un exemple:MISE À JOUR: La version actuelle de
dplyr
prend en charge le renommage directement dans le cadre de laselect
fonction (voir l'article de Romain François ci-dessus). La déclaration générale sur l'utilisation de fonctions non-dplyr dans le cadre dedplyr
chaînes est toujours valable etrename
est un exemple intéressant.la source
Elle n'est pas (encore) répertoriée en tant que fonction dans dplyr: http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
La fonction ci-dessous fonctionne (presque) la même chose si vous ne voulez pas charger à la fois plyr et dplyr
Edit: Le commentaire de Romain produit ce qui suit (notez que la fonction de changements nécessite dplyr .1.1)
la source
mtcars
etc ... mais assez dramatique si vous traitez avec des données substantielles. checkdplyr:::changes(mtcars, dat)
Bien qu'il ne soit pas exactement renommé,
dplyr::select_all()
peut être utilisé pour reformater les noms de colonne. Cet exemple remplace les espaces et les points par un trait de soulignement et convertit tout en minuscules:la source
J'ai essayé d'utiliser dplyr :: rename et j'obtiens une erreur:
J'ai plutôt utilisé la fonction de base R qui s'avère assez simple et efficace:
la source