查找值並分類你好,
我有一個問題,我需要對一些數據進行分類。 如果有一個自動化的過程,要分類的值的選擇會容易得多。 問題是這樣的:有 3 列的表(1 個類別,2 個深度測量,3 個數據點)。
1)我想分別為每個湖泊獲得低於 0,5 的那些(參見示例文件列 2)。 這意味著,0,5 不應包含在選擇評估中。
2)此外,我想通過分別為第 1 列的每個名稱選擇包含最多數據的三個最深值,將第 2 列中找到的值排序在具有最多數據點(N,第 3 列)的值之後。
3)為了對它們進行分類,我想創建一個新列,並為那些數據最多的列添加一個 1/2/3 到這三個列中數據最少的列。 如果發現兩個深度的數據點數量相等,則較深的應歸類為 1 或 2。
請參閱示例文件以獲得更好的理解:-)。
提前感謝您提供的任何解決方案,如果可以使用 jsl 的話。
回复:查找值和分類你好@Pacco ,
您是否偶然使用 JMP 12(或更早版本)? Col Rank() 在 JMP 13 中進行了更改,以允許 Xan 使用的附加參數。
從文檔:
JMP 12:
Col Rank(column)
聯合會議 13:
Col Rank(column, <BYVAR>, <<TIE></TIE></BYVAR>
回复:查找值和分類當我運行腳本然後使用
dt << Subset( Copy formula( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) )
我明白了
所有列都確實排名,但在 Stationsnamn 和 isBelow05 的唯一值內。 這由 Col Rank() 的第二個和第三個參數控制。 如果您希望將站點排列在一起,您可以通過變量從 Col Rank() 參數中刪除它。
回复:查找值和分類我可以問一下結果如何嗎? 我的排名整個列。 但是,我正在尋找每個部分的排名(每批相同的名稱,請參見 Stationsnamn 列)。
回复:查找值和分類感謝您的想法,“抑制評估”選擇和取消選擇有所幫助。 但是,等待 5 並沒有改變任何東西!

回复:查找值和分類我不確定是什麼導致了您的問題。當我打開您在上次回復中提供的數據表時,我看到了您的問題。我可以通過右鍵單擊 Rank 的列標題並選擇 Column Info 來更正此問題。它會打開“列信息”窗口。如下圖所示選擇“Suppress Eval”,然後點擊“Apply”按鈕。取消選擇“Suppress Eval”,然後再次單擊“Apply”按鈕,看看它是否更正了列中的值

我想讓您嘗試的另一件事是刪除“isbelow05”和“rank”列,然後運行以下腳本。
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
wait(.5);
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
如果它有效,問題可能是您的“isbelow05”公式在生成“rank”列之前沒有完成,它會導致問題。這
wait(.5);
正在給它時間來完成列“isbelow05”的創建
回复:查找值和分類嗯,這很奇怪。 我剛剛再次從這裡下載了示例文件(不同之處在於我選擇了一個額外的列),但是,即使我上傳的示例文件也顯示了我之前發布的相同錯誤。 但是,現在它在下面的 0,5 列中用 1 標記了表面值。 (見附件)
我也可以簡化這個問題。 然後只需要根據每個湖名部分的最高數字排名來選擇和分類值。
回复:查找值和分類Xan 包含的腳本非常適合您附加的示例數據。您的真實數據和您附加的示例數據表有什麼不同?
回复:查找值和分類你好,格雷格,
感謝您的回復和腳本。 不幸的是,它不適用於我的數據。 結果是兩個新列,第一列中沒有數據,第 2 列的第一個單元格中只有一個條目(“4,20533670002011e-315”)。
知道可能出了什麼問題嗎?
回复:查找值和分類如果我理解正確,這樣的事情應該會有所幫助。
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
如果深度“低於”是指數值更大,則將“<= 0.5”更改為“>= 0.5”。 感謝您提供示例文件。