柔軟な数のグループを処理するためにgroupbyをスクリプト化する方法こんにちは、
分析の自動化に取り組んでおり、自動生成されたスクリプトをより一般的にする必要があります。
ワークフローは、3つの列でグループ化された要約テーブルを作成し、4つの列が派生値を取得することです。 それは結構です。
ここで、元のグループ化変数の1つを使用して一方向プロットを作成し、さらに2番目の変数でプロットをグループ化します。
グループ化:サイクル、ステップ、固有のステップ
4つの個別のOnewaybyCycleグループ化されたステップ。
自動生成されたスクリプトは、テストファイルで正常に機能します。 問題は、それをより一般的にする方法です。
スクリプトを見ると、ステップ列の値に特定の呼び出しがあります
<< {Arrange in Rows(4)}、Where(:Step == 1)、Where(:Step == 1))
また、テストケースでは、ステップに19個の値があります。 ステップ数に柔軟に対応できるようにこれを作成するにはどうすればよいですか? ファイルが異なれば、ステップ数も異なります。 ここでのベストプラクティスは何ですか? 私の望みの結果は、4つのプロットを続けて配置し、グループ化ボックスにもステップの値が表示され(現在はプロットの後に小さなテキストで表示されています)、受信ファイルのステップ数に合わせてロボットを配置することです。
アンディ
dt1=Data Table( dt) <<SUMMARY></SUMMARY>
スクリプティングRe:柔軟な数のグループを処理するためにgroupbyをスクリプト化する方法いくつかの進歩を遂げました。
大量の作業は、「By」演算子を使用して処理できます。
それでも欠けているのは、グループを4つのグループに配置して、グループ化によるそれぞれのプロットが同じ線上にあるようにする方法です。
何かご意見は
アンディ
view = dt1 << Oneway(
Y( {:"Min(TV Pres (torr))"n ,:"Min(DS Pres (torr))"n,:"Max(TV Pres (torr))"n, :"Max(DS Pres (torr))"n}),
X( :Cycle ),
by (:Step),
Quantiles( 1 ),
Means( 1 ),
Mean Diamonds( 0 ),
Box Plots( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Grand Mean( 0 ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);Re:柔軟な数のグループを処理するためにgroupbyをスクリプト化する方法以下は、4つのグラフを単一の行に配置し、分析で指定された各列の行を配置する例です。

Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA\big class.jmp" );
// restrict to 4 ages to match the 4 level requirement
dt1 << select where( :age >= 16 );
dt1 << delete rows;
// Create a window to place the output in
nw = New Window( "test", lub = Lineup Box( N Col( 4 ) ) );
// Run the analysis with a By clause
view = dt1 << Oneway(
invisible,
Y( :height, :weight ),
X( :sex ),
Quantiles( 1 ),
Means( 1 ),
Box Plots( 1 ),
Mean Diamonds( 1 ),
by( :age ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);
// Take the elements from the outout and place in the window
// The display produces all levels of the by across one level
// of by group and then moves onto the next by group. Therefore
// the displays need to be picked across the full range of outputs
// to get the four grqaphs aligned
numCols = N Items( view ) / 4;
For( col = 1, col <= numCols, col++,
For( theRow = 1, theRow <= 4, theRow++,
lub << append( Report( view[(theRow - 1) * numCols + col] ) );
i++;
)
)
;
Re:柔軟な数のグループを処理するためにgroupbyをスクリプト化する方法こんにちは、
コードの最後のビットでi ++呼び出しの周りにエラーが発生します。 コードの前半で初期化された変数iが表示されません。 それは何を指しますか?
アンディ