將計算統計中的項目傳遞到保存的數據表中的特定坐標我生成了幾個帶有計算統計數據的圖表。 我想傳遞特定的計算統計參數,例如最小值、中值和最大值分位數和 Std Dev 來自匯總統計到使用 JSL 保存的數據表中的特定坐標。
例如我想傳遞
- 到第 5 行第 7 列的最小分位數
- 中位數到第 5 行第 8 列
- 到第 5 行第 9 列的最大分位數
- Std Dev 到第 5 行第 10 列。
到我保存的數據表。 如何使用 JSL 實現這一目標?
(坐標在保存的數據表中為空開始)
數據表圖形腳本編寫回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標我認為數據表下標可以幫到你
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標你好@新
看看你是否可以從這個腳本中提取你需要的東西
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.
在從輸出中提取數字時,需要小心。 如果輸出因偏好而不同或僅在一個窗口中包含多個輸出,則對位置的正確引用可能會發生變化。
讓我們知道它是否有效。
朗
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標謝謝@ron_horne . 我認為這會奏效。 但是,在對我的實際問題進行嘗試之前,我有一個問題。 在將值傳遞給它之前,是否需要打開“結果表”?
在我的情況下,“結果表”是一個保存的文件,我不打算打開它,除非不可能將值傳遞給它。
(如果我需要在將值傳遞給它時在實例中打開我的“結果表”,我將需要更改我的其餘代碼)
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標
你好@新
據我所知,JMP 無法將數據設置到封閉表格的單元格中。
如果這裡的其他人更了解,請告訴我們。
也許您可以打開另一個表格作為中介,以便在您仍在收集時將信息保留在那裡,並且只有在最後才打開最終結果表格。
朗
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標@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( ..... ) );
我需要檢查這如何影響我的其餘代碼。
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標嗨,尼奧,
您對 distb 的引用不起作用正弦 distb 不是任何報告層。它是分析層。 在 JMP 中,它們之間存在差異。
為了從輸出中提取任何內容,您需要明確引用報告層。
看到這個: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
如果您有多個輸出,則需要正確命名和定義它們,以確保獲得目標值。
讓我們知道它是否有效。否則,請考慮從給您帶來問題的角度提供一些文件和腳本。
祝一切順利,
朗
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標謝謝@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 ) /*###*/
我哪裡錯了?
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標你好@新,
如果我正確理解您的問題,您需要注意編號和地址。一旦您使用大綱框的名稱,表格框和編號列框的編號從 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/
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標再次感謝@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。 有沒有我可以做的簡單測試來測試我是否能從中得到任何東西輸出到數據表結果?
回复:將計算統計中的項目傳遞到保存的數據表中的特定坐標@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。