Kreuztabelle für jede mögliche Kombination von Spalten in Excel oder SPSS

568
Duc

Für eine Recherche habe ich den folgenden Datensatz in Excel (zur Vereinfachung vereinfacht):

Article | Boolean1 Boolean2 Boolean3 Boolean4| --------------------------------------------------------| 1 | Yes No Yes No | 2 | No Yes No Yes | 3 | Yes No No Yes | 4 | Yes Yes No Yes | 5 | Yes No No No | 

Ich möchte den Jaccard-Index für jede mögliche Kombination von Booleschen berechnen und daher zunächst ein großes Kreuztabellen-Arbeitsblatt erstellen, das ungefähr so ​​aussieht:

 | Boolean2 No Boolean2 Yes | Boolean3 No Boolean3 Yes | -----------------------------------------------------------------------| Boolean1 No | 0 1 | 1 0 | Boolean1 Yes | 3 1 | 3 1 | -----------------------------------------------------------------------| Boolean4 No | 2 0 | 1 3 | Boolean4 Yes | 1 2 | 1 0 | 

Ich möchte jedoch alle Kombinationen in einer solchen Tabelle, also in diesem Fall boolean1-boolean2, boolean1-boolean3, boolean1-boolean4, boolean2-boolean3, boolean2-boolean4 und boolean3-boolean4 (1-1, 2-2 usw.). Ich kann mich selbst herausfiltern).

Jetzt können Sie dies tun, indem Sie die 'Kreuztabellen' für alle Kombinationen in SPSS verwenden oder für jede mögliche Kombination eine PivotTable in Excel erstellen. Da ich jedoch 144 Artikel und 29 Variablen (alle boolesch) habe, wäre das Kopieren in ein separates Arbeitsblatt ziemlich zeitaufwändig. Da PivotTables die Variablen "stapeln", macht das Platzieren aller Variablen in denselben Zeilen / Spalten in einem PivotTable ebenfalls keinen Sinn. Die Antwort, die meiner Suche am nächsten kam, war diese Antwort . Bei Excel 2016 hat es jedoch nicht funktioniert.

Gibt es eine Möglichkeit, eine riesige Tabelle mit allen möglichen Kreuztabellen effizienter zu erstellen, als manuell in ein neues oder vorhandenes Arbeitsblatt in Excel oder in ein anderes Tool wie SPSS zu kopieren?

1

1 Antwort auf die Frage

0
Peter K.

Ich würde das mit machen COUNTIFS.

Erstellen Sie zuerst die Zeilen und Spalten der Tabellenüberschrift, was ziemlich einfach ist, insbesondere wenn die Variablen wie in Ihrem Beispiel (Boolean1, Boolean2, ...) nummeriert sind, da Sie nur Autofill verwenden. Ansonsten müssen Sie einige Zeichenfolgen bearbeiten / extrahieren, um eine schöne Tabelle zu erhalten:

 | Boolean2 Boolean2 | Boolean3 Boolean3 | | No Yes | No Yes | -----------------------------------------------------------------------| Boolean1 No | X | | Boolean1 Yes | | | -----------------------------------------------------------------------| Boolean4 No | | | Boolean4 Yes | | | 

Sie müssen Ihre Datenmenge auch als Excel-Tabelle (Strg-L) mit Kopfzeilen definieren (ich habe Table1 als Standardnamen verwendet).

Und in X (vorausgesetzt, dies ist Zelle C3) setzen Sie eine Formel:
=COUNTIFS(INDIRECT("Table1["& C$1 &"]");C$2;(INDIRECT("Table1["& $A3 &"]"));$B3)
Die Sie natürlich automatisch über den gesamten Bereich füllen können.

Das Table1[Boolean2]bezieht sich auf diese Spalte in Ihrem Dataset (das INDIRECTvermeidet, dass Sie die Spaltenreferenz hartcodieren müssen und den Wert in der Zelle verwenden können C1). Die Gesamtformel zählt also die Fälle, in denen Table1[Boolean2]"Nein" und Table1[Boolean1]auch "Nein" gilt (unter Verwendung der beiden Bedingungen in COUNTIFS).

Die Ausgabe ist vollständig symmetrisch. Je nachdem, wie Sie den Jaccard-Index berechnen möchten, müssen Sie nur die Ausgabe unterhalb der Diagonale nehmen (Verwerfen der Duplikate (N, M) & (M, N) und des Trivial (N, N) Einsen). Wenn Sie eine saubere Ausgabe auf einmal wünschen, können Sie natürlich eine zusätzliche hinzufügen, IFum nur die Anzahl zu berechnen, wenn der Variablenindex in der Zeile größer ist als der Variablenindex in der Spalte. Sie können dies wahrscheinlich auch in derselben Formel tun, aber für die Sichtbarkeit würde ich einfach eine zusätzliche Zeile und Spalte mit der Indexnummer der Variablen (von 1 bis 29) hinzufügen und diese testen.

Lieber Peter, danke für deine Antwort. Die Formel funktioniert jedoch nicht, da das Popup "Keine Formel eingeben" versucht. Ich nehme an, es gibt nur einen Syntaxfehler, da die INDIRECT-Referenz nicht zu funktionieren scheint. Die Formel ist jedoch zu syntaktisch zu schwierig für mich, um genau zu verstehen, was los ist (sorry, ich bin ein Noob). Duc vor 5 Jahren 0
Abhängig von Ihrer Region müssen Sie das Semikolon (Semikolon) durch ein Komma (,) ersetzen. Abgesehen davon, welchen Teil der Formel verstehen Sie nicht? Peter K. vor 5 Jahren 0