2016-10-04 12 views
-2

Ich habe ein Daten wie folgt aus:R: Wie die Spalten 1 in der gleichen Zeile enthält

df 
col1 col2 col3 
0  0 1 
1  0 0 

, und ich möchte ein Ergebnis in jeder Zeile zu sagen erhalten, die Spalte den Wert 1 und Rückkehr hat der Spaltenname zu mir. In jeder Reihe mit den Betrachtungsspalten wird es nur genau eine "1" geben. Es gibt andere Werte, die viel größer als 1 sind. Ohne eine neue Kopie der Daten mit den nur drei Spalten zu erstellen, möchte ich wissen, ob es effiziente Möglichkeiten zum Extrahieren des Spaltennamens geben würde.

+0

Versuchen 'max.col (df)' oder 'Namen (df) [max.col (df)]', wenn Sie die Namen –

+2

Oder etwas wollen, versuchen Sie einfach etwas –

+0

i bearbeitet die Frage, und das ist nicht das gleiche wie den größten Wert in jeder Zeile zu finden – lll

Antwort

0
apply(df, 1, function(row_tmp){ 
    which(row_tmp == 1) 
}) 
+0

Danke für die Annahme meiner Antwort. Ich erkannte, dass Sie gebeten hatten, die Spaltennamen zu extrahieren, ändern Sie einfach den Teil innerhalb der Funktion in 'names (df) [which (row_tmp == 1)]', um Spaltennamen zu erhalten. –

Verwandte Themen