Verwandle eine Zählmatrix in eine binäre Existenzmatrix

7

Ich habe einen Datenrahmen speichert den Besitz von Zahlen von verschiedenen Arten von Früchten verschiedener Menschen. Wie unten

%Vor%

Auch hier sind die Zahlen die Anzahl der Früchte. Wie kann ich es in eine Existenz-Matrix ändern, das heißt, wenn eine Person eine Frucht hat, egal wie viele sie hat, dann notiere ich 1, wenn nicht, notiere 0. Wie unten

%Vor%     
lolibility 25.01.2013, 16:47
quelle

5 Antworten

17

Hier ist Ihr data.frame :

%Vor%

Und deine Matrix:

%Vor%

Aktualisieren

Ich hatte keine Ahnung, dass eine schnelle Vor-Zubettgehen-Buchung alle Diskussion , aber die Diskussionen selbst sind ziemlich interessant, so Ich wollte hier zusammenfassen:

Mein Instinkt war einfach die Tatsache zu nehmen, dass unter einem TRUE und FALSE in R die Zahlen 1 und 0 stehen. Wenn Sie versuchen (ein nicht so guter Weg), nach Äquivalenz zu suchen, wie 1 == TRUE oder 0 == FALSE , erhalten Sie TRUE . Mein Shortcut-Weg (der sich als mehr Zeit als der richtige oder mindestens Weg vom konzeptionell korrekten Weg herausstellt) war, einfach% co_de hinzuzufügen % zu meinem 0 s und TRUE s, da ich weiß, dass R die logischen Vektoren zu numerisch zwingen würde.

Der richtige oder zumindest geeignetere Weg wäre, die Ausgabe unter Verwendung von FALSE zu konvertieren (ich denke, das ist es, was @ JoshO'Brien schreiben wollte). ABER .... leider entfernt das die dimensionalen Attribute der Eingabe, also müssen Sie den resultierenden Vektor in eine Matrix umwandeln, die, wie sich herausstellt, noch schneller als das Hinzufügen von as.numeric wie in meiner Antwort.

Nachdem ich die Kommentare und Kritiken gelesen hatte, dachte ich mir, ich würde eine weitere Option hinzufügen --- mit 0 , um die Spalten durchzulaufen und den apply -Ansatz zu verwenden. Das ist langsamer als das manuelle Erstellen der Matrix, aber etwas schneller als das Hinzufügen von as.numeric zum logischen Vergleich.

%Vor%

Danke für die Diskussion, ihr alle!

    
A5C1D2H2I1M1N2O1R2T1 25.01.2013, 16:57
quelle
4

use kann ifelse verwenden. Es sollte sowohl auf der Matrix als auch auf dem Datenrahmen funktionieren, der resultierende Wert ist jedoch eine Matrix

%Vor%     
Chinmay Patil 25.01.2013 16:53
quelle
4

Normalerweise verwende ich diesen Ansatz:

%Vor%     
Jeongmin Lee 09.08.2016 21:13
quelle
1

Benutze einfach einen Vergleich:

%Vor%     
csgillespie 25.01.2013 16:48
quelle
0
%Vor%     
vodka 25.01.2013 16:58
quelle

Tags und Links