Ich habe einen R-Datenrahmen mit 6 Spalten und möchte einen neuen Datenrahmen erstellen, der nur drei der Spalten enthält.
Unter der Annahme , meinen Datenrahmen ist df
, und ich mag Extrakt Spalten A
, B
und E
dies ist die einzige Befehl kann ich herausfinden:
data.frame(df$A,df$B,df$E)
Gibt es eine kompaktere Möglichkeit, dies zu tun?
df1 %>% select(A, B, E) %>% rowMeans(.)
. Lesen Sie die Dokumentation für die%>%
Pipe, indem Sie?magrittr::`%>%`
Sie können eine Teilmenge mithilfe eines Vektors von Spaltennamen erstellen. Ich bevorzuge diesen Ansatz gegenüber solchen, die Spaltennamen so behandeln, als wären sie Objektnamen (z. B.
subset()
), insbesondere beim Programmieren in Funktionen, Paketen oder Anwendungen.quelle
object of type 'closure' is not subsettable
.df
.df
ist auch eine Funktion im Statistikpaket.-"A"
ein Syntaxfehler vorliegt. Und?Extract
sagt : „ , auch negative ganze Zahlen sein können, Elemente / Scheiben angibt , von der Auswahl auslassen.“i
j
...
> df[,c("A")]
[1] 1
. Die Verwendungsubset
hat diesen Nachteil nicht.Dies ist die Rolle der
subset()
Funktion:quelle
c("A", "B")
ist ein Vektor, keine Liste.Es gibt zwei offensichtliche Möglichkeiten: Joshua Ulrichs
df[,c("A","B","E")]
oderwie in
quelle
Nur aus irgendeinem Grund
arbeitete für mich. Alle obigen Syntaxen ergaben "undefinierte Spalten ausgewählt".
quelle
Wobei df1 Ihr ursprünglicher Datenrahmen ist:
quelle
dplyr
. Es verwendetbase::subset
und ist identisch mit der Antwort von Stephane Laurent, außer dass Sie Spaltennummern anstelle von Spaltennamen verwenden.Sie können das
sqldf
Paket, das Auswahlen für R-Datenrahmen ausführt, auch wie folgt verwenden:Dies gibt als Ausgabe einen Datenrahmen
df1
mit Spalten: A, B, E.quelle
Sie können verwenden
with
:quelle
Sie können den neu erstellten Daten auch einen anderen Namen zuweisen
quelle
[
und Teilmenge sind nicht ersetzbar:[
Gibt einen Vektor zurück, wenn nur eine Spalte ausgewählt ist.quelle
drop=FALSE
. Beispiel:df[,c("a"),drop=F]