JMP 腳本 for 循環中的問題你好,我有兩個問題——
問題1——
我有一個簡單的數據(附後)和一個工作正常的腳本,但只要我想將其轉換為 for 循環。 沒有得到正確的東西。
AIM - 我想要每個電流的 top10% 電阻值。 我的數據不對稱,意味著每個電流的數據點數量不同。
在相同的數據中,只有 7 個當前值,而在實際數據中,可能需要數百個值。
方法 - 我正在生成一個分位數表,然後將我的電阻值與 90% 分位數值進行比較,並添加額外的列“Top10%”。 對於具有 7 個當前值的樣本數據,一切正常,但我需要一個循環。 超級用戶能否指出我在 for 循環中犯的錯誤是什麼,這將有助於學習如何實現 for 循環。
有什麼幫助嗎?
問題 2 -- 獲取前 95% 數據的最佳方式是什麼?
這裡有什麼幫助嗎?
高級統計建模自動化和腳本編寫數據探索和可視化大規模定制質量和工藝工程回复:JMP 腳本 for 循環中的問題感謝您清晰而精彩的解釋。 對於了解列公式的工作原理非常有幫助。 再次感謝。
回复:JMP 腳本 for 循環中的問題關於您的 For() 循環邏輯
- 一列只能有 1 個公式。在 For() 循環中包含公式定義將為每個循環指定不同的公式。我不知道JMP到底會做什麼,充其量,它會在創建新公式時替換每個公式,最終只保留最後創建的公式。
- 通過在每個 If 中設置“失敗”值,您的邏輯唯一準確的時間是最後一個級別是否為當前行的級別。否則,假設級別 3 是給定行的當前級別。JMP 會將 If 語句中的值設置為級別 1 為失敗,級別 2 為失敗,級別 3 為 Top10%,但 For() 循環繼續,因此測試級別 4 將導致失敗...... .... ..以及所有其他級別。
- 對於具有在公式之外定義的變量值的列的公式(即 dtF2、dtQ 以及對 dtQ 數據表中列的引用),只要數據表具有公式被打開。因此,在使用此類公式時,您需要做的是,一旦數據表運行了該公式,就刪除該公式。
dtF2:Name("Top10%") << delete formula;
這是我認為可行的公式版本......我還沒有測試過它,但我想你會看到這種方法。
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);回复:JMP 腳本 for 循環中的問題是的,完全沒問題。 更好、更簡單的方法來做到這一點。 我不知道我們也可以從匯總表中獲取分位數。 我正在按照您描述的方式實現它。
除了分位數和前 10% 的數據之外,還有什麼評論我的“for 循環”出了什麼問題嗎?
謝謝您的幫助。
回复:JMP 腳本 for 循環中的問題我相信下面的腳本是獲得您想要的結果的更簡單的方法

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);