2016-04-02 23 views
0

Ich bin ein Anfänger zu R und habe Probleme beim Indizieren in einen Datenrahmen mit einem Vektor von Spaltenwerten.R: Index in Datenrahmen durch mehrere Spaltenwerte

Ich möchte alle Zeilen von 2 Teilnehmern auswählen.

Daten sind der Datenrahmen. Teilnehmer ist eine Spalte

data[data$participant == c(8, 10),])

Ich dachte, das mir die alle Zeilen aus beiden Teilnehmer geben sollte 8 und 10, sondern es ist mir die Hälfte der Zeilen von Teilnehmer 8 und zur Hälfte von Teilnehmer 10. In anderen geben Wörter,

dim(data[data$participant == c(8, 10),]) ist das gleiche wie dim(data[data$participant == 8,]) oder dim(data[data$participant == 10,]) anstatt doppelt.

Das Problem scheint mit der Syntax der Indizierung dieser mehr Spaltentypen zu sein: data$participant == c(8, 10)

Ich wäre dankbar für alle Tipps, wie dies zu tun (ohne jeden Teilnehmer separat zu tun)! Vielen Dank!

Antwort

2

Verwenden Sie für mehrere Werte %in%, um einen logischen Vektor zu erhalten.

data[data$participant %in% c(8, 10),] 

Wenn wir == mit c(8,10) verwenden, wird das Recycling der 8 und 10, das heißt 8,10, 8, 10, 8, 10 ... usw. auf die Länge der 'Teilnehmer' Spalte. Wenn also der erste Wert im Teilnehmer 8 ist, gibt er TRUE zurück, aber wenn der 2. Wert 8 ist, wird er FALSCH, da das entsprechende Element 10 ist.

Verwandte Themen