JSL:取得資料表列的唯一值你好,
我目前使用摘要命令來獲取資料表列的唯一值,在我看來,這對於這個簡單的任務來說太複雜了。 我認為必須有一個更簡單的命令適用於資料表列或向量,但我找不到。 我對嗎?
我目前的程式碼如下所示:
// sample data set:
dt = New Table( "dt" );
dt:"Column 1" << setvalues( [1, 1, 2, 7, 7, 4, 5, 1, 5] );
// use summary to get unique values:
dt_sum = dt << summary( group( :Column 1 ), N, outputtablename( "dt_sum" ) );
unique_values = dt_sum:"Column 1" << getvalues;
達赫拉
回覆:JSL:取得唯一值您好,使用數組中的鍵來選擇或過濾具有相同鍵但位於不同 JMP 表中的行的方法是什麼。 我有兩張桌子。 其中之一將化學測試的樣品 ID 映射到不同的因素設定(溫度、時間、研究編號等)。 我成功地獲取了數組中的樣本 ID。 (抱歉,我對此完全是新手。)
smplID = Associative array(:sampleid) << Get Keys;
現在我想使用這些鍵選擇第二個表中的行(我的響應所在),反轉行選擇並刪除行。 也許下面的解決方案,正如這裡所描述的,更適合從?
Summarize(dt, smpleID = by(:sampleid));
或者可能這種方法更可取嗎?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
無論如何,我真正想知道的是,在進一步進行資料分析之前,如何使用這些方法中的任何一種來有效地清理資料表中不需要的行。
編輯:討論並解決這裡。
回覆:JSL:取得資料表列的唯一值試著總結一下...
總結可以做更多...請參閱腳本文件。
有幾個缺點。
- 儘管匯總的列可能是數字,但傳回的清單包含字元值。
- 與 1 相關,數值的精度會根據列寬而截斷。
// sample data set:
dt = newtable("dt");
dt:"Column 1" << setvalues([1, 1, 2, 7, 7, 4, 5, 1, 5]); summarize(unique_values=by(Column 1));
show(unique_values)
但是......這裡有一個解決缺點的方法:
summarize(unique_values=by(Column 1), unique_numeric_values=(max(Column 1)));
show(unique_values, unique_numeric_values)
回覆:JSL:取得唯一值研究這個例子:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
values = dt:age << Get Values;
array = Associative Array( values );
array << Get Keys;
回覆:JSL:取得唯一值您可以嘗試 Summarize(),然後簡單地循環遍歷傳回的列表並使用 num() 函數將字串值變更回數字。
您可以建立一個新列,在其中使用公式
:變數* 100
然後將資料從關聯數組轉換出來
您可以建立一個新列,將值轉換為字符回覆:JSL:取得唯一值感謝@Mark_Bailey提供的這個精彩而簡短的解決方案。
它通常有效,但在以下情況下無效:
values = {0.111, 0.222, 0.333}; // This is actually something like: values = Column(SomeList[1]) << Get Keys
N Items(Associative Array(values)) // gives 1
JMP 在建立關聯數組時忽略小數位。 (使用 JMP 12)
我如何使用關聯數組來解決這個問題,以便 N Items 返回 3 而不是 1?
回覆:JSL:取得唯一值謝謝您的幫忙!總結工作順利!
達赫拉回覆:JSL:取得唯一值也:
unique values = Associative Array( col ) << Get Keys
回覆:JSL:取得唯一值如果您想以數據表格式保存數據,那麼 Summarize 可以很好地發揮作用。
如果您想在列表中工作, @Mark_Bailey建議的關聯數組會很好用。回覆:JSL:取得資料表列的唯一值為初學者(我)的 JMP 使用者提出摘要解決方案。
在此範例中,我們需要從客戶訂單清單中取得特定成品的清單。我不會連結表格,而是為輸出表命名。
在原始資料表上,前往“表格”->“摘要”

將「成品」從選定列拖曳到右側的「群組中」。
為輸出表命名,在本例中為 UniqueFG。
取消勾選“連結到原始資料表”。
按一下「動作」****「確定」****。

產生的資料表是所有唯一 FG 和行數的列表。
點選編輯來源腳本。
它看起來會像這樣。
Data Table( "Test" ) <<
Summary(
Group( :Finished Good ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "UniqueFG" )
)
複製該代碼。
在原始資料表中建立一個新腳本並貼上程式碼。我稍微修改了程式碼,使其更加靈活/可擴展,並在下面的註釋中進行了註釋。
//Creates a list of unique FG #s to feed to SAP to get unit weights and carton quantities
Names Default to Here(1);
dt = current data table();
dt <<
Summary(
Group( :Finished Good ), //this is the column from which you want unique values
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ), //this turns off table linking
output table name( "UniqueFG" ) // this is the name of the new datatable
)
節省。
如果這是一個好的方法或程式碼結構,請隨時告訴我。謝謝!