計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡します計算された統計を使用していくつかのグラフを生成します。 特定の計算された統計パラメータ、たとえば最小値、中央値、最大値を分位数および標準偏差要約統計量JSLを使用して、保存されたデータテーブル内の特定の座標に移動します。
たとえば、私は渡したいです
- 行5、列7への最小分位数
- 行5、列8の中央値
- 行5、列9までの最大分位数
- StdDevから行5列10へ。
保存したデータテーブルに。 JSLを使用してこれを達成する方法は?
(最初に保存されたデータテーブルの座標は空です)
データ表グラフィックススクリプティングRe:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡します私が思うにデータテーブルの添え字これであなたを助けることができます
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";Re:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡しますやあ@Neo
このスクリプトから必要なものを抽出できるかどうかを確認してください
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:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡しますありがとう@ron_horne 。 これでうまくいくと思います。 しかし、実際の問題でこれを試す前に、1つの質問があります。 値を渡す前に「結果テーブル」を開く必要がありますか?
私の場合、「結果テーブル」は保存されたファイルであり、他の方法で値を渡すことができない場合を除いて、開く予定はありませんでした。
(値が渡されるときにインスタンスで「結果テーブル」を開く必要がある場合は、コードの残りの部分を変更する必要があります)
Re:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡します
やあ@Neo
私の知る限り、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:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡しますこんにちはネオ、
distbへの参照が機能していないsinedistbは何のレポートレイヤーでもありません。それは分析層です。 JMPではそれらの間に違いがあります。
出力から何かを抽出するには、レポートレイヤーを明示的に参照する必要があります。
これを参照してください: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
複数の出力がある場合は、目的の値を確実に取得できるように、それらに名前を付けて正しく定義する必要があります。
それが機能するかどうかをお知らせください。それ以外の場合は、問題が発生しているポイントからいくつかのファイルとスクリプトを提供することを検討してください。
ではごきげんよう、
ロン
Re:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡しますありがとう@ron_horne 。 私がやろうとしていることの概要を説明しようと思います。 私のメインスクリプトには、次の(ここで簡略化された)フローがあります。
データテーブルを開きます(そしてそれを呼び出しますdt )、関数を使用してその中のいくつかの列の分布プロットをプロットします
getDistribution ("ColName", "LSL", "USL", "other input parameters")
結果として得られる各分布プロットには、「分位数」、「要約統計量」、および「能力分析(アウトラインを閉じた状態)」があります。
メインスクリプトの次の部分は、テーブルを作成することです(それを呼び出しましょう) resultsdt )元の投稿に示されているように、計算された統計の値を渡す必要があるいくつかの行と列があります。
ただし、以下は動作しません。
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
表ボックス()と番号列ボックス()の番号が正しいことを確認しました。 次のエラーが発生します
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:計算された統計から保存されたデータテーブルの特定の座標にアイテムを渡しますやあ@Neo 、
私があなたの問題を正しく理解するならば、あなたは番号付けとアドレスに注意を払う必要があります。アウトラインボックスの名前を使用すると、テーブルボックスと番号列ボックスの番号は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 、しかし、これらは両方とも機能せず、同じエラーが発生します。
次のことが正しく有効な使用法であると言っていますか? 注意してくださいプロットしない以下のように使用した場合の分布(ところで、私はの機能を理解していません距離のdist = 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に渡したい場合。 から何かを得ることができるかどうかをテストするために私ができる簡単なテストはありますか?出力データテーブルへresultsdt ?
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を学んでいるので、どんな助けでも非常に役に立ちます。