Generieren und Summieren von Matrix

8

Ich bin relativ neu in R, also verzeih mir, was ich für eine relativ einfache Frage halte.

Ich habe Daten im Formular

%Vor%

wo A-E Menschen sind und 1-5 binär, ob sie diese Qualität haben oder nicht. Ich muss eine Matrix von A-E machen, wo Zelle A, B = 1, wenn die Summe von jeder Qualität 1-5 für A & amp; B summiert sich zu 2. (Wenn sie mindestens eine Qualität teilen). Das einfache 5x5 wäre:

%Vor%

Ich muss dann die gesamte Matrix summieren. (Oben wäre 9). Ich habe Tausende von Beobachtungen, also kann ich das nicht von Hand machen. Ich bin sicher, dass es ein paar einfache Zeilen Code gibt, ich bin einfach nicht erfahren genug.

Danke!

EDIT: Ich habe die Daten aus einer CSV-Datei mit den Spalten (1-5 oben) als Variablen importiert, in den realen Daten habe ich 40 Variablen. A-E sind einzigartige ID-Beobachtungen von Menschen, etwa 2000. Ich würde auch gerne wissen, wie man dies zuerst in eine Matrix umwandelt, um die großartigen Antworten, die Sie bereits gegeben haben, auszuführen. Danke!

    
ChrisDH 14.04.2015, 19:10
quelle

3 Antworten

6

Sie können hier Matrixmultiplikation verwenden

%Vor%

Setzen Sie dann bei Bedarf die Diagonale auf Eins

%Vor%

Wie DavidA in Kommentaren betont% tcrossprod macht grundsätzlich m %*% t(m)

Mehrere Wege zu ihnen berechnen die sum l hier ist ein

%Vor%     
user20650 14.04.2015, 19:30
quelle
1

Sie können outer verwenden, wenn m Ihre quadratische Matrix ist:

%Vor%

Daten:

%Vor%     
Colonel Beauvel 14.04.2015 19:22
quelle
1

Was ist damit? (Natürlich nicht so elegant wie die tcrossprod -Lösung):

%Vor%     
DatamineR 14.04.2015 20:23
quelle

Tags und Links