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% Hier ist Ihr data.frame
:
Und deine Matrix:
%Vor%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 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.
Danke für die Diskussion, ihr alle!
use kann ifelse
verwenden. Es sollte sowohl auf der Matrix als auch auf dem Datenrahmen funktionieren, der resultierende Wert ist jedoch eine Matrix