Extrahieren einer Teilmenge aus einem Datenrahmen basierend auf einem Zustand eines Feld Einbeziehung

StackOverflow https://stackoverflow.com/questions/3445590

  •  27-09-2019
  •  | 
  •  

Frage

Ich habe eine große CSV mit den Ergebnissen einer medizinischen Umfrage von verschiedenen Standorten (der Ort ist ein Faktor in den Daten). Da einige Analysen spezifisch für einen Standort und für die Bequemlichkeit sind, würde Ich mag Subframes mit den Reihen von diesen Stellen nur extrahieren. Es kommt vor, dass der Ort das erste Feld ist also ja, ich habe es durch Sortieren der CSV Zeilen tun könnte, aber ich mag lernen, wie man es in R zu tun, wie ich bin sicher, dass ich dies für andere Spalten benötigen.

Also, kurz gesagt, die Frage ist: einen Datenrahmen foo gegeben, wie kann ich einen anderen Datenrahmen bar erzeugen, die nur die Zeilen von foo enthält, in denen foo$location = 'there'

War es hilfreich?

Lösung

Hier sind die beiden wichtigsten Ansätze. Ich ziehe diese für seine Lesbarkeit:

bar <- subset(foo, location == "there")

Beachten Sie, dass Sie aneinanderzureihen viele conditionals mit & und | komplexen Untergruppen zu erstellen.

Die zweite ist die Indizierung Ansatz. Sie können Indexzeilen in R mit entweder numerisch oder boolean Scheiben schneiden. foo$location == "there" liefert einen Vektor von T F und Werte, die die gleiche Länge wie die Reihen von foo ist. Sie können dies tun, um nur Zeilen zurück, wo die Bedingung true zurück.

foo[foo$location == "there", ]

Andere Tipps

Sie einfach die Antwort oben können Sie auch Ihre Index Spalten anstatt Angabe der Spaltennamen zu erweitern, die auch nützlich sein kann, je nachdem, was Sie tun. Da Ihr Standort ist das erste Feld, um es so aussehen:

    bar <- foo[foo[ ,1] == "there", ]

Dies ist nützlich, weil Sie Operationen auf dem Spaltenwert, wie Schleifen über bestimmte Spalten durchführen können (und Sie können durch Indizierung Zeilennummern das gleiche tun auch).

Dies ist auch nützlich, wenn Sie auf mehr als eine Spalte eine Operation durchführen müssen, weil Sie dann eine Reihe von Spalten angeben:

    foo[foo[ ,c(1:N)], ]

oder bestimmte Spalten, wie man erwarten würde.

    foo[foo[ ,c(1,5,9)], ]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top