Gibt es eine Möglichkeit, alle Spalten eines Datenrahmens auszuwählen, mit Ausnahme einer Spalte, die einen bestimmten Namen hat?
Es wäre das Analogon zu df[, -1]
mit Ausnahme der Verwendung des Spaltennamens anstelle des Indexes?
Gibt es eine Möglichkeit, alle Spalten eines Datenrahmens auszuwählen, mit Ausnahme einer Spalte, die einen bestimmten Namen hat?
Es wäre das Analogon zu df[, -1]
mit Ausnahme der Verwendung des Spaltennamens anstelle des Indexes?
Sie können dies mit Hilfe von Vektor-Subsets tun. Erstellen Sie zunächst einen Dummy-Datensatz:
R> dd = data.frame(A = 1:3, B = 1:3, C=1:3, D=1:3)
Verwenden Sie dann die !
Operator, um die Auswahl rückgängig zu machen:
R> dd[ ,!(colnames(dd) == "A")]
B C D
1 1 1 1
2 2 2 2
3 3 3 3
Alternativ könnten Sie auch:
Eine etwas kürzere Version (mit freundlicher Genehmigung von @Tomas):
dd[ , names(dd) != "A"]
Um mit mehreren Spalten zurechtzukommen (mit freundlicher Genehmigung von @Tyler)
dd[ ,!(colnames(dd) %in% c("A", "B"))]
Man könnte die which()
um die zu eliminierende Spalte zu identifizieren.
dd <- data.frame(A = 1:5, B = 1:5, C=1:5)
dd[, -which(names(dd) == "A")]
oder positiv
dd[, which(names(dd) != "A")]
Wenn es jedoch keine Spalte mit dem Namen "A" gibt, würden Sie einen Datenrahmen mit 0 Spalten und nrow(dd)
Reihen. Es wäre also gut zu prüfen, ob eine Spalte mit dem Namen "A" vorhanden ist.
if(any(names(dd) == "A")) {
dd[, which(names(dd) != "A")]
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.