計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡します計算された統計を使用していくつかのグラフを生成します。 最小値、中央値、最大値など、特定の計算された統計パラメータを渡したいと思います。変位値からの標準偏差要約統計JSLを使用して、保存されたデータテーブルの特定の座標に。
たとえば、私は渡したいです
- 最小分位点から行 5、列 7
- 中央値から行 5、列 8
- 行 5、列 9 までの最大分位数
- 5 行目から 10 列目までの標準偏差。
私の保存されたデータテーブルに。 JSLを使用してこれを達成するにはどうすればよいですか?
(保存されたデータ テーブルの座標は、最初は空です)
データ表グラフィックスクリプティングRe: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すありがとう。 これは機能します。 Matlab と C# から来て、私はまだ JSL の考え方に慣れています。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すコードを注意深く見てください。 include 関数の戻り値を resultsdt に代入しています。 その戻り値は、含まれるファイルによって最後に行われることであり、「H」と評価されます。これはデータ テーブルではありません。
編集:
(1) basicTable.jsl に次のような最終行を追加します。
resultsdt;
または(2)インクルードを次のように変更します(コメントを追加)
/*resultsdt =*/ include ("basicTable.jsl");
(1)の方がご想像に近いと思います。 最後に評価されるのは、データ テーブルを保持する変数であることを確認し、次に include() の結果として返されます。
(2) ローカルの動作と同じ変数名を使用することによっては、おそらく機能します。 あらゆる場所で namesDefaultToHere を使用するかどうか、および resultsdt が既に存在するかどうかによって、少し予測不能になると思います。 テストなしでどのように機能するかわかりません。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すステートメント
Column(resultsdt, "Column 1")[8] ="H";
パラメータ名を渡すだけH列 1 の 8 行目まで。 別の定義方法結果
Names Default To Here (1);
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
resultsdt:Column 1[1] ="A";
resultsdt:Column 1[2] ="B";
resultsdt:Column 1[3] ="C";
resultsdt:Column 1[4] ="D";
resultsdt:Column 1[5] ="E";
resultsdt:Column 1[6] ="F";
resultsdt:Column 1[7] ="G";
resultsdt:Column 1[8] ="H";
使用時にも機能しません
resultsdt = include ("basicTable.jsl");
ただし、列 1 を空のままにしておくと、コードは正常に実行されます。 この問題を解決するための助けはすべて役に立ちます。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す
resultsdt = include ("basicTable.jsl");
そのファイルがあなたが示しているものである場合、問題は resultsdt がデータテーブルではなく、(おそらく?)これが評価されるものであることです
Column(resultsdt, "Column 1")[8] ="H";
これは「H」かもしれません。 include 関数の結果は最後に評価されます。 (あなたのメモと一致しています。)
はい、エラー メッセージは期待したほど役に立ちませんでした。 @Audrey_Shull - = の右側ではなく、左側を指す必要があります。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すありがとう@Craige_Hales . 私は今、この問題を少しよく理解しています。 ただし、まだ不具合があります。 以下は意図したとおりに動作します
Names Default To Here (1);
delete symbols ();
clear log ();
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
Column(resultsdt, "Column 1")[1] = "A";
Column(resultsdt, "Column 1")[2] = "B";
Column(resultsdt, "Column 1")[3] = "C";
Column(resultsdt, "Column 1")[4] = "D";
Column(resultsdt, "Column 1")[5] = "E";
Column(resultsdt, "Column 1")[6] = "F";
Column(resultsdt, "Column 1")[7] = "G";
Column(resultsdt, "Column 1")[8] ="H";
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = getDistChart ("weight", 55, 185);
toPass= Report( dist )[Outline Box("weight" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box(1)]<< get (1);
//resultsdt = include ("basicTable.jsl");
resultsdt[1, 2] = toPass;
//show (toPass);
ただし、定義すると結果以下別途
Names Default To Here (1);
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 8),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
Column(resultsdt, "Column 1")[1] = "A";
Column(resultsdt, "Column 1")[2] = "B";
Column(resultsdt, "Column 1")[3] = "C";
Column(resultsdt, "Column 1")[4] = "D";
Column(resultsdt, "Column 1")[5] = "E";
Column(resultsdt, "Column 1")[6] = "F";
Column(resultsdt, "Column 1")[7] = "G";
Column(resultsdt, "Column 1")[8] ="H";
そして、以下のように呼び出します(実際のコードをセットアップした方法です)
Names Default To Here (1);
delete symbols ();
clear log ();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = getDistChart ("weight", 55, 185);
toPass= Report( dist )[Outline Box("weight" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box(1)]<< get (1);
resultsdt = include ("basicTable.jsl");
resultsdt[1, 2] = toPass;
//show (toPass);
エラーが発生します
Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[1, 2] = /*###*/toPass/*###*/
どこが間違っているのですか?
(列1のエントリをまったく定義しない場合、上記の両方のアプローチがうまく機能することに注意してください)
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す2 の問題では、返されるローカル変数には何も割り当てられず、データ テーブルをユーザー関数に渡す必要があります。 このようなもの
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function( {dt, ColName, _LSL, _USL},
{distChart},
New Window( "" || ColName || " distribution",
distChart = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( As Column( ColName ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL( _LSL ), USL( _USL ) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
)
);
Return( distChart );
);
dist = getDistChart( dt, "weight", 55, 185 );
JMP では、<< 演算子は送信オペレーターにメッセージ (右側) を送信します。スクリプト可能なオブジェクト、 左に。 データ テーブル (dt) はスクリプト可能なオブジェクトですが、メッセージについては認識していませんgetDistChart . 次のような組み込みプラットフォームについて知っています分布. スクリプト インデックスには、データ テーブルのすべてのメッセージ名が表示されます。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す@ron_horne . 以下は、実際の問題と非常によく似ているため、もう少し明確にするのに役立ちます。 関数を介して分布プロットを取得します。
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
そもそも分布がプロットされないため、最後の行は分布から値を抽出するために想定されていることを行っていないように見えます。 問題は、分布が上記のような関数を介してプロットされたときに、計算された統計の値を取得する方法です。 おそらく、関数はメッセージではないため、<< を使用してオブジェクトに送信することはできませんか?
私はまだ JMP を学んでいるので、どんな助けもとても役に立ちます。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す再度、感謝します@ron_horne 、しかし、これらは両方とも機能せず、同じエラーが発生します。
次の使用法は正しく有効であると言えますか? であることに注意してくださいプロットしない以下のように使用した場合の分布(ところで、の機能がわかりません距離の距離=dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
およびエラー (ログからコピー)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
私が得ているのは、私の次の声明によるものです(以下の提案がある場合でも)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
そうであれば、簡単なテストを行い、より簡単なものを resultsdt に渡したいと思います。 何かを取得できるかどうかをテストするためにできる簡単なテストはありますか出力データテーブルへ結果?
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すやあ@ネオ、
私があなたの問題を正しく理解していれば、番号とアドレスに注意を払う必要があります.アウトライン ボックスの名前を使用すると、テーブル ボックスと番号列ボックスの番号付けは 1 から始まります。
したがって、次のことを試してください。
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Number Col Box (11) を使用する場合は、これを試してください。
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
これがうまくいくことを願っています。
一般に、このリンクのように、 xpath () またはパターン マッチングを使用して、スクリプトで目的の値の場所を見つけるためのより洗練された方法があります。 http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すありがとう@ron_horne . 私がやろうとしていることの概要を説明しましょう。 私のメイン スクリプトには、次の (簡略化されたここでは) フローがあります。
データテーブルを開きます(そしてそれを呼び出しますdt )、関数を使用してその中のいくつかの列の分布プロットをプロットします
getDistribution ("ColName", "LSL", "USL", "other input parameters")
結果の各分布プロットには、「分位点」、「要約統計量」、および「工程能力分析 (アウトラインを閉じた状態)」があります。
メインスクリプトの次の部分は、テーブルを作成することです(それを呼び出しましょう結果) 元の投稿に示されているように、計算された統計の値を渡す必要がある行と列がいくつかあります。
ただし、以下は機能しません。
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
Table Box () と Number Col Box () の数字が正しいことを確認しました。 次のエラーが表示されます
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
どこが間違っていますか?
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すネオさん、こんにちは。
distb への参照が機能していないので、distb はレポート レイヤーではありません。それは分析層です。 JMPでは、それらの間に違いがあります。
出力から何かを抽出するには、レポート レイヤーを明示的に参照する必要があります。
これを参照してください:分析からレポートへの統計の抽出複数の出力がある場合は、目的の値を取得していることを確認するために、それらに名前を付けて正しく定義する必要があります。
動作するかどうかお知らせください。それ以外の場合は、問題が発生しているポイントからいくつかのファイルとスクリプトを提供することを検討してください。
ではごきげんよう、
ロン
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す@ron_horne . ありがとう。 できるように再コーディングするのに時間がかかりました計算された統計からの値に対して開いている「結果テーブル」は、それに渡される可能性があります。
私はあなたの提案から始めました、そして神に質問があります. これが機能しないのはなぜですか?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
なぜそうしなければならないのですか?
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
distb1、distb2などの名前を簡単に割り当てることができる複数の分布プロットがありますが、必要な場合
output = Report( dist = dt << Distribution( ..... ) );
これが残りのコードにどのように影響するかを確認する必要があります。
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡す
やあ@ネオ
私の知る限り、JMP で閉じたテーブルのセルにデータを設定する方法はありません。
ここにいる他の誰かがもっとよく知っているなら、私たちに知らせてください.
おそらく、まだ収集している間に情報をそこに保持するための仲介として別のテーブルを開き、最後にのみ最終結果テーブルを開くことができます。
ロン
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すありがとう@ron_horne . これはうまくいくと思います。 ただし、実際の問題でこれを試す前に、1 つの質問があります。 値を渡す前に「結果テーブル」を開く必要がありますか?
私の場合、「結果テーブル」は保存されたファイルであり、それ以外の方法で値を渡すことができない場合を除き、開く予定はありませんでした。
(値が渡されたときにインスタンスで「結果テーブル」を開く必要がある場合は、残りのコードを変更する必要があります)
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すやあ@ネオ
このスクリプトから必要なものを抽出できるかどうかを確認してください
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
出力から数値を抽出する場合は注意が必要です。 環境設定のために出力が異なる場合、または 1 つのウィンドウに複数の出力が含まれているだけの場合、場所への正しい参照が変わる可能性があります。
動作するかどうかお知らせください。
ロン
Re: 計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡すおもうデータ テーブルの添え字付けこれであなたを助けることができます
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";