JMP腳本中的循環問題您好,我有兩個問題-
問題1-
我有一個簡單的數據(附加)和一個運行良好的腳本,但是只要我想將其轉換為for循環即可。沒有得到正確的東西。
目的-我想要每個電流的top10%電阻值。我的數據不是對稱的,這意味著每個電流的數據點數是不同的。
在同一數據中,只有7個當前值,在實際數據中,它可能需要100多個值。
方法-我正在生成一個分位數表,然後將我的電阻值與90%的分位數進行比較,並添加一個額外的列“ Top10%”。對於具有7個當前值的樣本數據,一切都工作正常,但是我需要一個循環。超級用戶能否指出我在for循環中犯的錯誤,這將有助於學習如何實現for循環。
有什麼幫助嗎?
Ques2-獲取前95%數據的最佳方法是什麼?
這裡有什麼幫助嗎?
腳本編寫回复:問題在JMP腳本循環我相信以下腳本是獲得所需結果的簡單方法

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" ) )
);
回复:問題在JMP腳本循環是的,很好。更好,更簡單的方法。我不知道我們也可以從匯總表中得到分位數。我正在按照您描述的方式實施它。
除了分位數和前10%的數據外,還有什麼評論我的“ for循環”出了什麼問題?
謝謝您的幫助。
回复:問題在JMP腳本循環關於您的For()循環邏輯
- 一列只能有1個公式。 在For()循環中包含公式定義將為每個循環指定不同的公式。 我不確切知道JMP會做什麼,充其量是,它會在創建新公式時替換每個公式,最後只創建最後一個公式。
- 通過在每個If中設置“ Fail”值,邏輯上唯一準確的時間就是Last Level是當前行的級別。 否則,假設級別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;
)
);