Ich mag die Umbenennungsfunktion von Plyr rename
. Ich habe vor kurzem angefangen, dplyr zu verwenden, und habe mich gefragt, ob es eine einfache Möglichkeit gibt, Variablen mit einer Funktion von dplyr umzubenennen, die genauso einfach zu verwenden ist wie die von plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
aber ich bekommeError: Unknown variables: NewVarName.
und ich verstehe nicht warum.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
und rename () behandelt keine Variablennamen mit Leerzeichen. Dies führt beispielsweise zudplyr::rename(iris, petal_length = "petal length")
einem Fehler.setNames()
wenn Sie die Spaltennamen Großhandel ersetzen:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
Die nächste Version von dplyr unterstützt eine verbesserte Version von select, die auch das Umbenennen beinhaltet:
quelle
changes
plyr
die Umbenennungsfunktion verwendet,"old"="new"
währenddplyr
Verwendungen verwendet werden,new=old
die sie mit den übrigen dplyr-Funktionen konsistent halten. Persönlich halte ich das nicht für ein Problem - Sie gewöhnen sich schnell an neue Dinge, insbesondere wenn dies eine erhebliche Beschleunigung Ihrer Datenverarbeitung bedeutet.select
. Wir sind uns nicht sicher, ob wir etwas haben, das besagt, alle Variablen auswählen und diese Spalte übrigens umbenennen.select
tatsächliche Verhalten widerspiegelt, um Verwirrung zu vermeiden ? Ich würde für eine einfachedplyr
Möglichkeit stimmen , alle Variablen beizubehalten und nur eine oder zwei umzubenennen. :) Im Moment werde ich weiter ladenplyr
und verwendenrename
.mtcars %>% select(matches(".*"),disp2=disp)
. Ich würde eine sparsamere Lösung lieben, aber dies funktioniert und bewahrt alle Spalten (wenn auch nicht ihre Reihenfolge).disp
wird nicht dupliziert.Sie können tatsächlich
plyr
's verwendenrename
Funktion als Teil derdplyr
Ketten. Ich denke, jede Funktion, die a) adata.frame
als erstes Argument nimmt und b) eindata.frame
Werk zur Verkettung zurückgibt . Hier ist ein Beispiel:UPDATE: Die aktuelle Version von
dplyr
unterstützt das direkte Umbenennen als Teil derselect
Funktion (siehe Beitrag von Romain Francois oben). Die allgemeine Aussage über die Verwendung von Nicht-Dplyr-Funktionen als Teil vondplyr
Ketten ist jedoch weiterhin gültigrename
ein interessantes Beispiel.quelle
Es ist (noch) nicht als Funktion in dplyr aufgeführt: http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
Die folgende Funktion funktioniert (fast) gleich, wenn Sie nicht sowohl plyr als auch dplyr laden möchten
Bearbeiten: Der Kommentar von Romain erzeugt Folgendes (beachten Sie, dass die Änderungsfunktion dplyr .1.1 erfordert)
quelle
mtcars
gedacht ist, dh usw. ... aber ziemlich dramatisch, wenn Sie mit umfangreichen Daten arbeiten. Scheckdplyr:::changes(mtcars, dat)
dplyr::select_all()
Kann nicht genau umbenannt werden, kann jedoch zum Neuformatieren von Spaltennamen verwendet werden. In diesem Beispiel werden Leerzeichen und Punkte durch einen Unterstrich ersetzt und alles in Kleinbuchstaben umgewandelt:quelle
Ich habe versucht, dplyr :: rename zu verwenden und erhalte eine Fehlermeldung:
Ich habe stattdessen die Basis-R-Funktion verwendet, die sich als recht einfach und effektiv herausstellt:
quelle