2 列スイッチャーのレポートを同時に作成する方法はありますか?こんにちは、
複数の X と Y のリストがある多重 t テストを実行したいのですが、スクリプトを使用してこれを行う方法はありますか? 1 列スイッチャーに使用しているスクリプトを少し変更しましたが、両方を同時に実行する方法がありません。たとえば、この小さなテスト (3x3) は次のようになります。
Oneway(
Y(:Name("A")),
X(:Name("1")),
t Test(1),
Column Switcher(:Name("A"), {:Name("A"), :Name("B"), :Name("C")}),
Column Switcher(:Name("1"), {:Name("1"), :Name("2"), :Name("3")})
);
rpt = Current Report();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox(1)] << get scriptable object;
colswitch_list = colswitcher_obj << get list;
/* Loop through each column in the colswitch_list */
For(i = 1, i <= N Items(colswitch_list), i++,
/* Change here */
dt1 = rpt[Outline Box("t Test")][Table Box(1)] << make combined data table;
/* Concatenate the tables */
If(i == 1,
main_tb = dt1;
main_tb << Set Name("All");
,
Try(main_tb << Concatenate(dt1, Append to First Table));
Close(dt1, No Save);
);
/* Close temporary tables and switch next column */
colSwitcher_obj << Next;
);
自動化とスクリプトRe: 2 列スイッチャーのレポートを同時に作成する方法はありますか?ループ内で間違った列スイッチャー オブジェクト参照を使用しています (N 個の項目 (colswitch_list2) を持つ内部ループは colSwitcher_obj2 << Next に変更する必要があります)。

また使用する

JSL を JMP コミュニティに投稿するときに、投稿が読みやすくなるようにします。
Re: 2 列スイッチャーのレポートを同時に作成する方法はありますか?確かにその通りです。今では 10x10 列で完璧に動作します (以下のスクリプトを参照)。
しかし、X 列の数と Y 列の数が完全に同じでないと、切り替えが機能しないという問題があります。何が間違っているのか、ご存じですか?
// 分析と列スイッチャー
一方通行(
Y(:名前("553"))、
X(:名前("1"))、
t検定(1)
列スイッチャー(:Name("1"), {:Name("1"), :Name("2"), :Name("3"), :Name("4"), :Name("5"), :Name("6"), :Name("7"), :Name("8"), :Name("9"), :Name("10")}),
列スイッチャー(:Name("553"), {:Name("553"), :Name("554"), :Name("555"), :Name("556"), :Name("557"), :Name("558"), :Name("559"), :Name("560"), :Name("561"), :Name("562")}));
//レポート作成
rpt = 現在のレポート();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << スクリプト可能なオブジェクトを取得します。
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << スクリプト可能なオブジェクトを取得します。
colswitch_list = colswitcher_obj << リストを取得;
colswitch_list2 = colswitcher_obj2 << リストを取得;
// 各Y変数をループする
j = 1, j <= N 項目(colswitch_list), j++,
// 各X変数をループする
k = 1, k <= N 項目(colswitch_list2)の場合、k++、
/* ここで変更 */
dt1 = rpt[アウトライン ボックス ( "t テスト" )] [テーブル ボックス ( 1 )] << 結合されたデータ テーブルを作成します。
/* テーブルを連結する */
j == 1 & k == 1の場合、
main_tb = dt1;
main_tb << 名前を設定します( "All" );
、
Try( main_tb << Concatenate( dt1, 最初のテーブルに追加 ) );
閉じる(dt1, 保存なし);
);
// 次のX列に切り替える
colSwitcher_obj << 次へ;
待つ(0);
);
// 次のY列に切り替える
colSwitcher_obj2 << 次へ;
待つ(0);
);
Re: 2 列スイッチャーのレポートを同時に作成する方法はありますか?データについて何も知らないと、何とも言えません。たとえば、列の 1 つに大量のカテゴリがあり、それが問題の原因になっているという問題が発生する可能性があります。各 << next の後に wait(0); を追加すると少しは改善されるかもしれませんが、スクリプトは依然として非常に遅くなる可能性が高いです。
また、少なくとも k 変数の最大カウントが間違っていると思います (N Items(col_switch_list2) ではないでしょうか)。
Re: 2 列スイッチャーのレポートを同時に作成する方法はありますか?次のスクリプトで問題を修正しましたが、データベース全体で実行すると、JMP がクラッシュします (メモリの問題だと思います)。メモリの問題を回避する方法はありますか?
一方通行(
Y( :名前( "A" ) )、
X( :名前( "1" ) )、
t検定(1)
列スイッチャー( :Name( "1" ), {:Name( "1" ), :Name( "2" ), :Name( "3" )} ),
列スイッチャー(
:名前( "A" ),
{:名前( "A" )、:名前( "B" )、:名前( "C" )}
)
);
rpt = 現在のレポート();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << スクリプト可能なオブジェクトを取得します。
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << スクリプト可能なオブジェクトを取得します。
colswitch_list = colswitcher_obj << リストを取得;
// 各Y変数をループする
j = 1, j <= N 項目(colswitch_list), j++,
// 各X変数をループする
For(k = 1, k <= N 項目(colswitch_list), k++,
/* ここで変更 */
dt1 = rpt[アウトライン ボックス ( "t テスト" )] [テーブル ボックス ( 1 )] << 結合されたデータ テーブルを作成します。
/* テーブルを連結する */
j == 1 & k == 1の場合、
main_tb = dt1;
main_tb << 名前を設定します( "All" );
、
Try( main_tb << Concatenate( dt1, 最初のテーブルに追加 ) );
閉じる(dt1, 保存なし);
);
// 次のX列に切り替える
colSwitcher_obj << 次へ;
);
// 次のY列に切り替える
colSwitcher_obj2 << 次へ;
);
Re: 2 列スイッチャーのレポートを同時に作成する方法はありますか?これに列スイッチャーを使用する特別な理由はありますか? 列をループし、レポートを再作成して結果を抽出することができます。