Angenommen, wir haben den folgenden Datenrahmen:
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
Wir können die Spalte 'B' aus ihrem Index auswählen:
> df[,2]
[1] 2 5 8
Gibt es eine Möglichkeit, den Index (2) von der Spaltenbezeichnung ('B') zu erhalten?
Antworten:
Sie können den Index erhalten über
grep
undcolnames
:grep("B", colnames(df)) [1] 2
oder verwenden
grep("^B$", colnames(df)) [1] 2
um nur die Spalten mit dem Namen "B" ohne diejenigen zu erhalten, die ein B enthalten, z. B. "ABC".
quelle
grep
die Art und Weise, wie Sie es beschreiben.Folgendes wird es tun:
which(colnames(df)=="B")
quelle
grep
ist auch der Vorteil, dass es reguläre Ausdrücke verwendet (so dass Sie nach jedem Muster in Ihren Spaltennamen suchen können). Um nur die Spaltennamen "B" zu erhalten, verwenden Sie"^B$"
als Muster in grep. ^ ist das Metazeichen für den Anfang und $ für das Ende eines Strings.which
. Sie können direkt verwendendf[names(df)=="B"]
grep("^fBodyAcc-meanFreq\\()-Z$",colnames(df))
oder auchgrep("^fBodyAcc-meanFreq\\(\\)-Z$",colnames(df))
.Ich wollte alle Indizes für die Spaltennamen anzeigen, da ich eine komplizierte Spaltenumordnung vornehmen musste, also habe ich die Spaltennamen als Datenrahmen gedruckt. Die Rownamen sind die Indizes.
as.data.frame(colnames(df)) 1 A 2 B 3 C
quelle
cbind(names(df))
.Nach der obigen Antwort von chimeric :
Um ALLE Spaltenindizes in der df zu erhalten , habe ich Folgendes verwendet:
which(!names(df)%in%c())
oder in einer Liste speichern:
indexLst<-which(!names(df)%in%c())
quelle
Dies scheint eine effiziente Möglichkeit zu sein, Variablen mit der Spaltennummer aufzulisten:
cbind(names(df))
Ausgabe:
[,1] [1,] "A" [2,] "B" [3,] "C"
Manchmal kopiere ich gerne Variablen mit Position in meinen Code, damit ich diese Funktion verwende:
varnums<- function(x) {w=as.data.frame(c(1:length(colnames(x))), paste0('# ',colnames(x))) names(w)= c("# Var/Pos") w} varnums(df)
Ausgabe:
# Var/Pos # A 1 # B 2 # C 3
quelle
match("B", names(df))
Kann auch funktionieren, wenn Sie einen Namensvektor haben.
quelle
Verwendung
t
Funktion:t(colnames(df)) [,1] [,2] [,3] [,4] [,5] [,6] [1,] "var1" "var2" "var3" "var4" "var5" "var6"
quelle