根據唯一條目將 N 列條目合併為單列你好,
我有 N 列,其中包含我想要合併到單個列中的字符數據。對於給定行,許多列可以為空或包含重複/相同的值(與另一列中的條目相比)。
我知道列 --> 實用程序 --> 合併列下有一個函數,這將生成一個新列,其中所有字段並排並分隔。我需要有關如何在保持唯一性的同時執行此過程的建議(即,如果該行中沒有其他具有相同值的列,則僅附加該列的值)
理想情況下,我希望獲得有關如何在 JSL 中編寫腳本的指導。 然而,也歡迎使用 JMP 數據表/函數的聰明(但更乏味)的方法!
謝謝。
自動化和腳本編寫回复:根據唯一條目將 N 列的條目合併為單列謝謝布雷迪布雷迪!
對我也有用!回复:根據唯一條目將 N 列的條目合併為單列非常感謝小姐姐!!
我喜歡這個解決方案的靈活性,包括能夠指定要使用的開始和結束列#。我真的很喜歡你還按字母順序排序以減少排列數量!
回复較晚,抱歉。 我最初認為存在一個無法正常工作的極端情況問題,但重新訪問後我沒有發現問題。
回复:根據唯一條目將 N 列的條目合併為單列感謝 Txnelson 的快速回復和解決方案!
這工作正常,但是,我的列名稱有點長並且我有很多,所以不想手動指定列表。
我可以使用簡單的 dt << Get Column Names 獲取列名稱並存儲它。
我也非常喜歡超級用戶“ms”如何按字母順序排列條目,這減少了排列數量(儘管我沒有要求它)
回复較晚,抱歉。
回复:根據唯一條目將 N 列的條目合併為單列我更喜歡前面的答案,但您也可以通過點擊來完成此操作,這對那些不編寫腳本的人很有吸引力(顯然,存在不編寫腳本的人!!)
與關聯數組方法一樣,結果列的值按從小到大排序。
1) 選擇原始列,並使用組合列實用程序創建多重響應列。
2) 選擇新列並將文本應用到列實用程序,確保選中“創建指示器”框。
3) 選擇 10 個新指標列後,應用組合列實用程序,確保選中“列是指標列”框。
回复:根據唯一條目將 N 列的條目合併為單列這是吉姆公式的替代方案。 不同之處在於的獨特價值組合字符串按字母順序排序,而不是按出現順序排序。
通過設置本地參數可以概括列數氮。
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(它使用數據表矩陣表示法,因此僅適用於 JMP 13 或更高版本)
回复:根據唯一條目將 N 列的條目合併為單列這是解決這個問題的一種方法。我創建了一個公式,該公式組合了列列表中的唯一值。我附上了一個示例數據表,其中的公式應用於最後一列

下面是使用的公式
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );