Berechne die Summenmatrix

8

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:

%Vor%

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:

%Vor%

.. 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.

    
arvi1000 30.09.2014, 23:25
quelle

2 Antworten

6

Versuchen Sie es mit Matrixmultiplikation

%Vor%

(Obwohl dies ein Zufall sein könnte)

    
user20650 01.10.2014, 00:42
quelle
3

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.

%Vor%     
josliber 01.10.2014 00:23
quelle

Tags und Links