R - Erstellen einer Teilmenge von Spalten basierend auf Werten in einer Zeile in einem Datenrahmen

Ich habe eine Matrix, die ich unterteilen und schließlich verwenden möchte, um eine Handlung zu machen. Die Daten sind eine Liste von Zählwerten für bestimmte Blutmarker für jeden Patienten in einer Population. Es sieht aus wie das:

    df <- data.frame(MarkerID=c("Class","A123","A124"),
             MarkerName=c("","X","Y"),
             Patient.1=c(0,1,5),
             Patent.2=c(1,2,6),
             Patent.3=c(0,3,7),
             Patient.4=c(1,4,8))

Ich möchte einen Datenrahmen aller Patienten (Spalten 3-6) mit einem Klassenwert von Null (1. Zeile) und einen zweiten Datenrahmen aller Patienten mit einem Klassenwert von 1 erstellen.

In der Vergangenheit habe ich die Teilmengenfunktion verwendet, um Zeilen basierend auf den Werten in einer Spalte auszuwählen. Ist es möglich, eine Teilmenge von Spalten basierend auf den Werten in einer Zeile auszuwählen?

Ich habe es versucht:

x <- subset(data, data[1,] == 0)

wenn ich es jedoch tuedim(x) Die Anzahl der Spalten ist die gleiche wiedim(data) Die Anzahl der Zeilen ist jedoch unterschiedlich. Gibt es Ideen, wie ich dafür sorgen kann, dass nur die Spalten zurückgegeben werden, deren Wert in Zeile 1 0 ist?

Roland, ja. Sie sind ein Beispiel dafür, wie der Datenrahmen aussieht. Es gibt ~ 30.000 Marker und> 400 Patienten im Datenrahmen, daher habe ich das nicht gepostetdput(head(data)). Danke für den Umform-Tipp, ich werde es versuchen.

Ihr Beispielcode hat funktioniert, um die Spalten basierend auf den Zeilen zu unterteilen

data[,c(TRUE,TRUE,data[1,-(1:2)]==1)]

Auf den Daten konnte ich dann einen Datenrahmen mit allen Zeilen und nur den Spalten mit der angegebenen Klasse erhalten.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage