So benennen Sie ausgewählte Spalten mit dplyr mit neuen Spaltennamen als strings
Habe ich Folgendes tibble:
library(tidyverse)
df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5), Sepal.Width = c(3.5,
3, 3.2, 3.1, 3.6), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4)), .Names = c("Sepal.Length",
"Sepal.Width", "Petal.Length"), row.names = c(NA, 5L), class = c("tbl_df",
"tbl", "data.frame"))
Sieht liegen diese:
> df
# A tibble: 5 × 3
Sepal.Length Sepal.Width Petal.Length
* <dbl> <dbl> <dbl>
1 5.1 3.5 1.4
2 4.9 3.0 1.4
3 4.7 3.2 1.3
4 4.6 3.1 1.5
5 5.0 3.6 1.4
Was ich tun möchte, ist zu ersetzen Sepal.Length
und Petal.Length
mit angehängtem string to_app <- ".xxx"
ergibt:
Sepal.Length.xxx Sepal.Width Petal.Length.xxx
5.1 3.5 1.4
4.9 3.0 1.4
4.7 3.2 1.3
4.6 3.1 1.5
5.0 3.6 1.4
Habe ich versucht, diese mit Fehler:
>df %>% rename(paste(Sepal.Length,to_app,sep="") = Petal.Length,paste(Sepal.Width,to_app,sep="") = Petal.Length)
Error: unexpected '=' in "df %>% rename(paste(Sepal.Length,to_app,sep="") ="
Nur ein weiterer R-Konstruktion, dies zu tun, verwenden
match
- vars <- c("Sepal.Length", "Sepal.Width"); names(df)[match(vars, names(df))] <- paste0(vars, to_app)
InformationsquelleAutor neversaint | 2017-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie verwenden möchten dplyr ' s
rename
Funktion, am besten wäre es, erstellen Sie eine benannte Vektor /Liste und rufen Sie es mit der.dots
argument in der standard-Auswertung version:Beachten Sie jedoch, dass dieser Ansatz ist zu ändern mit der nächsten version 0.6.0 von dplyr (siehe z.B. http://blog.rstudio.org/2017/04/13/dplyr-0-6-0-coming-soon/ und http://dplyr.tidyverse.org/articles/programming.html).
InformationsquelleAutor docendo discimus
Können Sie die
rename_at
Funktion für dieses (ab dplyr_0.7.0).Zum Beispiel, können Sie übergeben Sie die Variablen, die Sie umbenennen möchten als strings. In deinem Beispiel, die
paste0
Funktion kann verwendet werden, zum Anhängen auf das entsprechende suffix für jede Spalte.Können Sie auch die select-helper-Funktionen wählen Sie Variablen für die Umbenennung, wie
contains
.InformationsquelleAutor aosmith
Ich bin ein wenig spät zur party, aber nach und starrte auf die Programmierung vignette für eine lange Zeit fand ich die relevanten Beispiel in der Verschiedene input-und output-variable
.
In meiner Benutzung einfacher Fall, ich musste nur umbenennen einer Spalte den Wert ein string:
Also, wenn du glücklich bist, um dies manuell tun, können Sie nur:
Wenn, jedoch, Sie brauchen etwas, das fügt automatisch
".xxx"
zu was auch immer Spalte name angegeben wird, um es, empfehle ich Ihnen einen genauen Blick auf diesen Abschnitt. Es ist immer noch ein bisschen über meinen Kopf, leider, aber ich kann sehen, dass es machbar >_>InformationsquelleAutor rensa
EDIT:
Entschuldigung für nicht richtig Lesen. Hier ist eine Lösung mit Daten.Tabelle Paket.
InformationsquelleAutor Adam Quek
Vorausgesetzt, das Ziel ist, benennen Sie alle Spalten "Länge":
InformationsquelleAutor neilfws
Die besten, die ich tun kann in der Entwicklung version von
dplyr
(erscheint am 11. Mai):Dazu vollständig programmgesteuert, man braucht
quos
statt:Beide geben:
One-liner:
!!!
statt!!
Ja, ich habe ein Lösung dafür, aber nicht sicher, ob es ist ein Weg, um zu vermeiden
do.call
- und/odersetNames
es.Gut zu sehen in diesem Beispiel, aber ich hoffe, dass wird nicht die endgültige version zu tun, da imho, es ist zu kompliziert für eine eher einfache Spalte umbenennen
Ich bin damit einverstanden! Einige haben sich die Dinge schöner aus, aber ich glaube nicht, leicht erkennen, ein bequemer Weg, dies zu tun, mit
tidyeval
/rlang
. Ich würde nicht sagen, dass es schrecklich wenn. Vielleicht @hadley kann uns seine auf diese zu nehmen.[tongue-in-cheek] und zu denken, dass Hadley einmal argumentiert, dass in den Daten.Tabelle braucht man, um zu lernen "cryptic shorcuts"... Nicht zu vergessen, dass
:=
thingi sieht etwas bekannt aus einigen kryptischen Paket gibt, die ich nicht erinnern, seinen Namen....InformationsquelleAutor Axeman