Angenommen, ich habe einen Datenrahmen mit mehreren Spalten mit kategorischen Daten und einer Spalte mit quantitativen Daten. Hier ist ein Beispiel:
%Vor% Jetzt sieht my_data
folgendermaßen aus:
Was ist der eleganteste Weg, um eine Kreuztabelle / Summe von quantity
zu erhalten, wo beide Werte =='t'
sind? Das heißt, ich suche eine Ausgabe wie folgt:
.. wobei der Schnittpunkt von x / y die Summe von quantity
, wo x=='t'
und y=='t'
ist. (Ich sorge mich nur um die Hälfte dieser Tabelle, wirklich, da die Hälfte doppelt ist)
So sollte zum Beispiel der Wert von A / C sein:
%Vor%* Edit: Was ich schon hatte war:
%Vor%Was zum gewünschten Ergebnis führt:
%Vor%Ich mag diese Lösung, weil sie sehr "wörtlich" ist, ist sie ziemlich lesbar: zwei wenden Funcs (alias Loops) an, um durch Reihen * Spalten zu gehen, jede Zelle zu berechnen und die Matrix zu erzeugen. Auch genug schnell genug auf meine tatsächlichen Daten (winzig: 192 Zeilen x 10 Spalten). Ich mochte es nicht, weil es wie viele Zeilen aussieht. Danke für die Antworten bis jetzt! Ich werde überprüfen und absorbieren.
Für jeden Zeilennamen könnten Sie einen Vektor dat
erstellen, bei dem es sich nur um die Zeilen handelt, deren Wert gleich t
ist. Dann könnten Sie die wahren / falschen Werte in dieser Datenteilmenge mit dem Mengenwert dieser Zeile multiplizieren (also 0, wenn falsch und der Mengenwert, wenn sie wahr ist), und schließlich die Spaltensumme nehmen.
Tags und Links r data.table reshape2