Hallo zusammen,
Ich bin mir nicht sicher, ob das möglich ist, aber ich versuche mein Glück.
Ich möchte (in jsl) eine Art Kreuztabellenfeld erstellen, aber mit meinen eigenen Werten anpassen. Zum besseren Verständnis:
Hier ist eine Tabelle (ABB. 1) mit den Daten, die ich anzeigen möchte:
FIG. 1 - TabulateFIG. 1 - TabulateFEIGE. 1 - Tabellieren
Das ist in Ordnung, aber nicht ganz das, was ich will. Was ich erhalten möchte, ist etwas Ähnliches wie das Kreuztabellenfeld, das wir erhalten, wenn wir eine Kontingenzanalyse aufrufen, wie zum Beispiel in FIG.2:
FIG.2 - contingency tableFIG.2 - contingency table ABB.2 – Kontingenztabelle
ABER statt „Anzahl“, „Gesamt %“ usw. würde ich in die Zellen die Mittelwerte eingeben, die meinen Analysespalten in tabellarisch entsprechen.
Die Funktionen, die mir an diesem Design gefallen und die ich in der tabellarischen Version nicht habe, sind:
- die Möglichkeit, mehrere Werte in einer Zelle anzuzeigen (und eine Legende in der oberen linken Ecke anzuzeigen)
- die Schattierung der Spalten- UND Zeilenüberschriften
- das Fehlen der „Mittelwert“-Zeile unter den Spaltenüberschriften
Ich konnte keine Möglichkeit finden, mein Tabulat mithilfe der Tab-Box in das umzuwandeln, was ich möchte. Glaubst du, dass es möglich wäre?
Danke
Sie können das Tabulate mithilfe einer TableBox und ColSpan-Boxen relativ einfach neu erstellen. Ein Beispiel finden Sie weiter unten.
Names Default To Here( 1 );
New Window( "Col Span Box",
Table Box(
Number Col Box( "CAT_ECH", {1, 2, 3} ),
Col Span Box(
"CAT_MK",
Col Span Box(
"0-100",
Col Span Box("COUT_TOT_ENVIRONNE",Number Col Box( "Mean", {1, 2, 3} )),
Col Span Box("TEMPS",Number Col Box( "Mean", {1, 2, 3} )),
Col Span Box("COUT_CONSOS",Number Col Box( "Mean", {1, 2, 3} ))
),
Col Span Box(
">=100",
Col Span Box("COUT_TOT_ENVIRONNE",Number Col Box( "Mean", {1, 2, 3} )),
Col Span Box("TEMPS",Number Col Box( "Mean", {1, 2, 3} )),
Col Span Box("COUT_CONSOS",Number Col Box( "Mean", {1, 2, 3} ))
)
)
)
);
So sieht die Col Span Box-Methode aus:

Da die CrossTabBox DisplayBox nicht mit JSL skriptfähig ist, müssten Sie eine andere Methode verwenden, um etwas wie das nachzubilden, was in der Contingency-Plattform verwendet wird.
Sie können dies mithilfe eines Konzepts tun, an dem ich gearbeitet habe, um mithilfe einer LineupBox Ihre eigenen benutzerdefinierten Tabellen zu erstellen. Diese Methode verwendet eine benutzerdefinierte Funktion für die Erstellung jeder Zelle, um eine große Codeduplizierung zu vermeiden. Einzelheiten finden Sie in meinen Kommentaren.
//helper function to create cells in the lineupBOx "table"
getCell = Function( {values, altShading, justify = "left"},
{Default Local},
// Create a lineup box to add each of the values to
lb = Lineup Box( N Col( 1 ), SPacing( 0 ) ); // 1 column and no spacing
// loop through and add each value
For( i = 1, i <= N Items( values ), i++,
// if justify is left, put the spacer box on the right, otherwise, put it on the left
If( justify == "left",
// borderBox to give values some spacing (and for shading)
b = Border Box( Right( 5 ), Left( 5 ), top( 1 ), bottom( 1 ),
H List Box(
//Text box with current value
Text Box( values[i] ),
// Spacing to fill the cell shading all the way to the right (will grow horizontally, but not vertially)
Spacer Box( <<SET max="" size="">=100", "", "", ""}, 0 ),
getCell( {"Total", "", "", ""}, 0 ),
//Row 2
getCell( {"0-250", "", "", ""}, 0 ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
//Row 3
getCell( {"250-3000", "", "", ""}, 0 ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
//Row 4
getCell( {">=3000", "", "", ""}, 0 ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
getCell( {"13", "30.95", "43.33", "68.42"}, 1, "Right" ),
//Row 5
getCell( {"Total", ""}, 0 ),
getCell( {"13", "30.95"}, 1, "Right" ),
getCell( {"13", "30.95"}, 1, "Right" ),
getCell( {"13", "30.95"}, 1, "Right" )
)
)
)
)
)
);</SET>
So sieht das resultierende Fenster mit dieser Methode aus:
