Dies ist möglicherweise eine einfache Frage, aber ich weiß nicht, wie ich Spalten alphabetisch sortieren soll.
test = data.frame(C = c(0, 2, 4, 7, 8), A = c(4, 2, 4, 7, 8), B = c(1, 3, 8, 3, 2))
# C A B
# 1 0 4 1
# 2 2 2 3
# 3 4 4 8
# 4 7 7 3
# 5 8 8 2
Ich mag es, die Spalten nach Spaltennamen alphabetisch zu ordnen, um dies zu erreichen
# A B C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
Für andere möchte ich meine eigene definierte Reihenfolge:
# B A C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
Bitte beachten Sie, dass meine Datensätze mit 10000 Variablen sehr groß sind. Daher muss der Prozess stärker automatisiert werden.
test[ order(names(test)) ]
colnames
: Am Ende wirdnames
nach a gerufendata.frame
.Hier ist die obligatorische
dplyr
Antwort für den Fall, dass jemand dies mit der Pfeife tun möchte.quelle
test%>%select(b,sort(names(.)))
wird es als "b, a, c" setzenMit der folgenden einfachen Funktion kann das Ersetzen durchgeführt werden (jedoch nur, wenn der Datenrahmen nicht viele Spalten enthält):
für andere:
quelle
Das Sortieren nach Spaltennamen kann problemlos funktionieren.
quelle
Wenn Sie nur eine oder mehrere Spalten vorne haben möchten und sich nicht um die Reihenfolge der anderen kümmern möchten:
quelle
Damit zuerst eine bestimmte Spalte und dann der Rest alphabetisch angezeigt wird, würde ich diese Lösung vorschlagen:
quelle
Eine alternative Option ist die Verwendung
str_sort()
aus der Bibliothek stringr mit dem Argumentnumeric = TRUE
. Dadurch wird die Spalte korrekt sortiert, die Zahlen nicht nur alphabetisch enthält :str_sort(c("V3", "V1", "V10"), numeric = TRUE)
# [1] V1 V3 V11
quelle
Ähnlich wie bei der obigen Syntax, aber zum Lernen - können Sie nach Spaltennamen sortieren?
quelle
[1:ncol(test)]
macht hier nichts, es ist nur eine längere Art zu schreibensort(colnames(test))
.Folgendes habe ich herausgefunden, um ein ähnliches Problem mit meinem Datensatz zu erreichen.
Tun Sie zuerst das, was James oben erwähnt hat, dh
Verwenden Sie zweitens die Funktion every () in dplyr, um bestimmte interessierende Spalten (z. B. "D", "G", "K") am Anfang des Datenrahmens zu verschieben und die alphabetisch geordneten Spalten nach diesen zu setzen.
quelle