こんにちは、みんな、
これが可能かどうかはわかりませんが、運を試してみます。
(jslで)クロスタブボックスのようなものを作成したいのですが、独自の値でカスタマイズしました。 自分自身をよりよく理解してもらうために:
これは、表示したいデータを含む表 (図 1) です。
FIG. 1 - TabulateFIG. 1 - Tabulateイチジク。 1 - 表を作成する
これは問題ありませんが、私が望むものとはまったく異なります。 私が取得したいのは、図 2 のような、偶発性分析を呼び出したときに取得するクロスタブ ボックスに似たものです。
FIG.2 - contingency tableFIG.2 - contingency table図2 - 分割表
ただし、「Count」や「Total%」などの代わりに、表の分析列に対応する平均値をセルに入力します。
このデザインで私が気に入っている機能で、表形式バージョンにはない機能は次のとおりです。
- 1 つのセルに複数の値を表示する可能性 (および左上隅に凡例を表示する)
- 列と行のヘッダーの陰影
- 列ヘッダーの下に「平均」行がない
タブボックスを使用して表を希望するものに変換する方法が見つかりませんでした。 それは可能だと思いますか?
ありがとう
TableBox と ColSpan ボックスを使用すると、非常に簡単に表を再作成できます。 以下の例を参照してください。
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} ))
)
)
)
);
Col Span Box メソッドは次のようになります。

CrossTabBox DisplayBox は JSL を使用してスクリプト化できないため、Contingency プラットフォームで使用されているものと同様のものを再作成するには、別の方法を使用する必要があります。
これは、LineupBox を使用して独自のカスタム テーブルを作成するという私が取り組んできたコンセプトを使用して行うことができます。 この方法では、多くのコードの重複を避けるために、各セルの作成にカスタム関数を使用します。 詳細については私のコメントを参照してください。
//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>
このメソッドを使用した結果のウィンドウは次のようになります。
