JMP 團隊您好,
是否可以透過允許僅對選定列的子集進行排序來增強「列重新排序」命令?
謝謝,
TS
抱歉,我沒有意識到這個對話還在繼續,我今天才回到社區網站。
我同意所做的事情。
謝謝,
拍
加載項已發佈到社區的文件交換/加載項,並處於等待審核狀態(自 2022 年 1 月 15 日起)。
您還應該能夠從此處獲取加載項GitHub - 訂購選定的列通過下載 JMP-Tools Order Selected Columns.jmpaddin 文件並安裝它。
插件現在應該準備好了。 在完成更多測試後,我將嘗試在今天或週末使用插件將帖子創建到 JMP 社區的討論區。
安裝後,新的子菜單將添加到加載項菜單(它可以添加到列菜單,但即使讓它作為插件工作現在也足夠工作和麻煩了)。
加載項菜單:

設置窗口:

可以添加的可能的東西:
- 更多排序選項(與 JMP 已經提供的一樣)
- 添加工具欄
- 移動到列菜單
- 重構代碼,因為它在實現選項後變得混亂
- 更好地管理以前的列順序
- 結合保存當前列順序和分組?
好吧,我會嘗試弄清楚如何為該插件添加一些簡單的“設置”菜單,因為我認為在啟動腳本時打開菜單有點不必要。
可以建立這樣的菜單,但我不確定是否有必要:

它確實已經支持這些選項,但用戶必須在插件內的 settings.json 文件中進行修改,這就是為什麼它需要一些小的 UI 來進行更改。
@jthi ,
非常感謝您將出色的技能應用於這個問題。
關於選定列的列重新排序行為,我建議默認設置是重新排序和重新組合已排序的列,並且可以選擇將重新排序的列保留在原位。
最好的,
TS
我同意這一點,如果沒有選擇任何列 -> 當前功能則使用選定的列。
您認為應該如何對選定的列進行列排序? 應該只使用選定的列進行排序,還是應該將除第一個選定列之外的所有列一起移動(我已經編寫了代碼,但我必須對其進行測試)。 幾張圖片來解釋我在問什麼:
開局情況:

僅在選定列內按名稱排序:

將它們組合在一起時進行排序:

@jthi ,謝謝你的代碼!我會用它。
我想我們都同意這應該是 JMP 的基本功能。“Cols -> Reorder Cols -> Reorder By Name”的工作方式類似於選擇重複行等其他功能,如果沒有選擇任何列,JMP 會找到所有列都相同的重複行。但如果選擇了列,JMP 只會在這些列中查找重複行。
@pcarroll1如果您想始終按字母順序對組中的列進行排序,您應該能夠編寫腳本。
由於使用 For Each,此腳本需要 JMP16。 它應該在組內按字母順序對數據表中所有組中的列進行排序(如果您只想重新排序特定組,您可以為要重新排序的組添加選擇)
Names Default To Here(1);
//Alphabetically order columns in groups JMP16
dt = Current Data Table();
col_groups = dt << Get Column Groups Names("String");
col_list = dt << Get Column Names("String");
For Each({col_group}, col_groups,
cols_in_group = dt << get column group(col_group);
//get index of first column in group
index_of_first = Contains(col_list, cols_in_group[1] << get name);
ordered_cols_in_group = Sort List(cols_in_group);
//fix indices
ordered_cols_in_group = ordered_cols_in_group;
dt << Move Selected Columns(ordered_cols_in_group, After(Column(dt, index_of_first)));
);前:

後:

例如表的腳本:
New Table("Untitled 3",
Add Rows(0),
New Column("a", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("b", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("x", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("a 2", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("c", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("b 2", Numeric, "Continuous", Format("Best", 12), Set Values([]), Set Display Width(82)),
New Column("z", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("a 3", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("x 2", Numeric, "Continuous", Format("Best", 12), Set Values([])),
Group Columns(:x, 4),
Group Columns(:z, 3)
)創建一個插件應該相當容易,它應該能夠執行此願望列表項中要求的操作,當然最好將其包含在 JMP 中。
我想這樣做已經有一段時間了。在組內按字母順序重新排列列會很有幫助。有時我將新列添加到列組,但隨後發現它們成為一個問題,因為名稱不再排序,除非我手動執行。