Wie reorganisiert man Spalten in einem Datenrahmen?
Wie würde man dies ändern-Eingang (mit der Folge: Zeit -, in -, out-Dateien):
Time In Out Files
1 2 3 4
2 3 4 5
Dieser Ausgabe (mit der Sequenz: time-out, in, Dateien)?
Time Out In Files
1 3 2 4
2 4 3 5
Hier ist der dummy-R Daten:
table <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))
table
## Time In Out Files
##1 1 2 3 4
##2 2 3 4 5
InformationsquelleAutor der Frage Catherine | 2011-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre dataframe hat vier Spalten, die wie so
df[,c(1,2,3,4)]
.Hinweis: dem ersten Komma bedeutet, dass alle Zeilen und 1,2,3,4 bezieht sich auf die Spalten.
Ändern Sie die Reihenfolge wie in der obigen Frage zu tun
df2[,c(1,3,2,4)]
Wenn Sie ausgeben möchten Sie diese Datei als csv -, tun
write.csv(df2, file="somedf.csv")
InformationsquelleAutor der Antwort richiemorrisroe
InformationsquelleAutor der Antwort Xavier Guardiola
Können Sie auch die Teilmenge Funktion:
Sollten Sie besser verwenden Sie die [] - operator wie in den anderen Antworten, aber es kann nützlich sein, zu wissen, dass Sie tun können, eine Teilmenge und eine Spalte neu anordnen, den Betrieb in einem einzigen Befehl.
Update:
Können Sie auch verwenden, wählen Sie die Funktion aus der dplyr-package:
Ich bin nicht sicher über die Effizienz, aber Dank dplyr die syntax dieser Lösung sollten flexibler sein, speziell, wenn Sie haben eine Menge von Spalten. Zum Beispiel, im folgenden wird die Reihenfolge der Spalten die mtcars Datensatz in der anderen Reihenfolge:
Sowie die folgende ordnet nur einige Spalten, und verwerfen die anderen:
Lesen Sie mehr über dplyr - select-syntax.
InformationsquelleAutor der Antwort dalloliogm
Wie bereits in dieser Kommentardie standard-Vorschläge für neu-anordnen von Spalten in einer
data.frame
sind in der Regel umständlich und fehleranfällig, vor allem, wenn Sie haben eine Menge von Spalten.Diese Funktion ermöglicht es, zu re-arrangieren Spalten-position: geben Sie einen Namen und die gewünschte position und sorgen Sie sich nicht über die anderen Spalten.
Nun der OP-Anforderung wird so einfach:
Zusätzlich swap
Time
undFiles
Spalten, die Sie dies tun können:InformationsquelleAutor der Antwort landroni
Vielleicht ist es ein Zufall, dass die Reihenfolge der Spalten, die Sie wollen, geschieht, Spalte-Namen in absteigender alphabetischer Reihenfolge. Da das der Fall ist, könnte man nur tun:
Das ist, was ich verwenden, wenn ich große Dateien mit vielen Spalten.
InformationsquelleAutor der Antwort user3482899
Wenn Sie die Daten verwenden.Tisch-Paket dann diese bietet eine gute und kompakte Weise
Wie neu-Daten.Spalten der Tabelle (ohne zu kopieren)
InformationsquelleAutor der Antwort usct01
Einen
tidyverse
Lösung ist die Verwendungselect
:InformationsquelleAutor der Antwort Ben G
Die einzige, die ich gesehen habe, gut funktionieren, ist aus hier.
Verwenden, wie diese:
Funktioniert wie ein Charme.
InformationsquelleAutor der Antwort Cybernetic
Den drei top-bewertet Antworten haben eine Schwäche.
Wenn Ihr dataframe sieht wie folgt aus
dann ist es eine schlechte Lösung zu verwenden
Es macht den job, aber Sie haben nur eingeführt, eine Abhängigkeit von der Reihenfolge der Spalten in der Eingabe.
Diese Art der spröde Programmierung vermieden werden.
Die explizite Benennung der Spalten ist eine bessere Lösung
Plus, wenn Sie beabsichtigen, die Wiederverwendung von code in einer Allgemeinen Einstellung, können Sie einfach
die ist auch ganz nett, da es komplett isoliert-Literale. Durch Kontrast, wenn Sie mit dplyr ' s
select
dann wäre die Einrichtung diejenigen, die Lesen Ihren code später, dich eingeschlossen, für ein bisschen eine Täuschung. Die Spaltennamen werden als Literale ohne Sie in dem erscheinenden code als solchen.
InformationsquelleAutor der Antwort Vrokipal