Ich weiß nicht, ob es sich lohnt, dies als Antwort hinzuzufügen oder ob ein Kommentar in Ordnung wäre, aber ich habe eine Funktion namens geschrieben moveme
, mit der Sie mit der von Ihnen beschriebenen Sprache tun können, was Sie wollen. Sie finden die Funktion unter folgender Antwort: https://stackoverflow.com/a/18540144/1270695
Es funktioniert auf names
Ihrem data.frame
und erzeugt einen Zeichenvektor, mit dem Sie Ihre Spalten neu anordnen können:
mydf <- data.frame(matrix(1:12, ncol = 4))
mydf
moveme(names(mydf), "X4 first")
moveme(names(mydf), "X4 first; X1 last")
mydf[moveme(names(mydf), "X4 first")]
Wenn Sie solche Dinge durcheinander bringen, schlage ich vor, Ihre data.frame
in a umzuwandeln data.table
und setcolorder
(mit meiner moveme
Funktion, wenn Sie möchten) die Änderung anhand der Referenz vorzunehmen.
In Ihrer Frage haben Sie auch erwähnt "Ich möchte nur eine Spalte auswählen und an den Anfang verschieben". Wenn es sich um eine beliebige Spalte handelt und nicht speziell um die letzte, können Sie auch die Verwendung in Betracht ziehen setdiff
.
Stellen Sie sich vor, Sie arbeiten mit dem Datensatz "mtcars" und möchten die Spalte "am" an den Anfang verschieben.
x <- "am"
mtcars[c(x, setdiff(names(mtcars), x))]
data[,c(ncol(data),1:(ncol(data)-1))]
dataframe<-dataframe[,c(1000, 1:999)]
Dadurch wird Ihre letzte Spalte, dh die 1000. Spalte, in die erste Spalte verschoben.
quelle
Wenn Sie eine benannte Spalte an die erste Position verschieben möchten, verwenden Sie einfach:
df[,c(which(colnames(df)=="desired_colname"),which(colnames(df)!="desired_colname"))]
quelle
dplyr 1.0.0
Enthält jetzt dierelocate()
Funktion zum Neuordnen von Spalten. Das Standardverhalten besteht darin, die benannten Spalten an die erste Position zu verschieben.library(dplyr) # from version 1.0.0 mtcars %>% relocate(carb) %>% head() carb mpg cyl disp hp drat wt qsec vs am gear Mazda RX4 4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 Mazda RX4 Wag 4 21.0 6 160 110 3.90 2.875 17.02 0 1 4 Datsun 710 1 22.8 4 108 93 3.85 2.320 18.61 1 1 4 Hornet 4 Drive 1 21.4 6 258 110 3.08 3.215 19.44 1 0 3 Hornet Sportabout 2 18.7 8 360 175 3.15 3.440 17.02 0 0 3 Valiant 1 18.1 6 225 105 2.76 3.460 20.22 1 0 3
Andere Speicherorte können jedoch mit den Argumenten
.before
oder angegeben werden.after
:mtcars %>% relocate(gear, carb, .before = cyl) %>% head() mpg gear carb cyl disp hp drat wt qsec vs am Mazda RX4 21.0 4 4 6 160 110 3.90 2.620 16.46 0 1 Mazda RX4 Wag 21.0 4 4 6 160 110 3.90 2.875 17.02 0 1 Datsun 710 22.8 4 1 4 108 93 3.85 2.320 18.61 1 1 Hornet 4 Drive 21.4 3 1 6 258 110 3.08 3.215 19.44 1 0 Hornet Sportabout 18.7 3 2 8 360 175 3.15 3.440 17.02 0 0 Valiant 18.1 3 1 6 225 105 2.76 3.460 20.22 1 0
quelle
Ein nativer R-Ansatz, der mit einer beliebigen Anzahl von Zeilen oder Spalten arbeitet, um die letzte Spalte eines Datenrahmens an die erste Spaltenposition zu verschieben:
df <- df[,c(ncol(df),1:ncol(df)-1)]
Es kann verwendet werden, um eine beliebige Spalte in die erste Spalte zu verschieben, indem Folgendes ersetzt wird:
df <- df[,c(your_column_number_here,1:ncol(df)-1)]
Wenn Sie die Spaltennummer nicht kennen, aber den Namen der Spaltenbezeichnung kennen, ersetzen Sie "your_column_name_here" wie folgt:
columnNumber <- which(colnames(df)=="your_column_name_here") df <- df[,c(columnNumber,1:ncol(df)-1)]
quelle
Verschieben Sie eine beliebige Spalte von einer beliebigen Position zur ersten Position in Ihren Daten
n <- which(colnames(df)=="column_need_move") column_need_move <- df$column_need_to_move df <- cbind(column_need_move, df[,-n])
quelle