安裝插件,然後從主選單啟動:表 > 動態子集


目的:
此加載項會建立動態子集,它是開啟的資料表的可篩選視圖,因此您只能查看符合指定條件的行和列。
影片範例:
使用說明:
- 首先下載,然後開啟加載項將新選單項目「動態子集」安裝到您的表格選單中。
- 資料表已開啟後,選擇選單項目「表」>「動態子集」。 將開啟一個新窗口,其中包含原始表格的連結子集,包括右側的兩個大綱框,列過濾器和數據過濾器。
- 這列篩選大綱框可讓您選擇您希望在動態子集中看到哪些列。
- 這數據過濾器大綱框包含 JMP 資料篩選器,您可以在其中指定資料必須滿足的條件才能顯示在動態子集中。
- 要使用列過濾器,選擇您希望在動態子集中看到的列。 打清除,或取消選擇所有列以顯示動態子集中的所有可用列。
- 要使用數據過濾器,選擇要過濾的一個或多個列,然後按一下加號。 然後,在結果選擇區域中選擇您的資料必須滿足哪些條件才能包含在動態子集中。 有關使用 JMP 資料過濾器的更多詳細信息,請參閱此範例影片 (使用本地資料過濾器),或者在JMP 文檔。
- 做出選擇後,您可以像往常一樣在動態子集上使用 JMP 平台,並且只有您選擇的行和列才可用並用於分析。
- 選擇“過濾器”>“將視圖儲存到資料表”旁邊的紅色三角形來儲存視圖。 這會將腳本儲存到資料表中,其中包含重新建立動態子集所需的資訊。 您可以從現有動態子集內部套用此視圖,或者如果尚未開啟任何動態子集,則可以直接從資料集啟動。
使用注意事項:
- 如果您先在原始表格中選擇列,然後選擇“加載項”>“動態子集”,則所選列將自動新增為可篩選條件數據過濾器部分。
- 動態子集是原始表的連結子集,因此您在動態子集中所做的選擇將選擇原始表中的對應行。
- 預設情況下,動態子集是鎖定的。 若要解鎖,請選擇表格名稱旁的紅色三角形,然後取消勾選「鎖定資料表」。

請注意,與 JMP 中任何連結子集的情況一樣,許多您在動態子集中所做的變更不會影響原始表,例如建立新列。 變更單元格和列屬性中的數據將要影響你原來的表。 任何您對列或資料篩選器所做的調整會將表格還原為原始表格。
- 你可以在沒有開啟表格的情況下選擇“表格”>“動態子集”,您將提示選擇一張桌子。 在這種情況下,預設情況下原始表會在檢視中隱藏,但可以透過選擇選單項目「視窗」>「隱藏」下的表來顯示。
啊,是的,我想我可能知道發生了什麼事。 當我有時間的時候,我會啟動我的虛擬機,看看是否可以在 Windows 上的專案中運行它。 我還發現,即使在 Mac 上,情況也不能完美運行,因為資料過濾器的輪廓框消失了。 感謝您讓我知道該缺陷!
@朱利安當我在 Windows 中嘗試時收到以下錯誤訊息
你好@斯布雷爾,
謝謝你讓我知道! 我對此進行了研究,至少在 Mac 上,我可以確認,除非您在過濾器上進行某種選擇,否則不會出現資料表。 一旦你這樣做了,事情似乎就會按預期進行。 那對你有用嗎? 我還不確定為什麼會發生這種情況,但在開發下一個版本時需要研究它。

@朱利安不確定您是否意識到這一點,但這個插件似乎無法在專案上下文中工作。
感謝您的所有回饋, @jthi ! 出色的建議。 當我可以騰出時間進行下一次迭代時,我肯定會嘗試合併其中的一些內容。
@xxvvcczz程式碼似乎使用 For Each,因此至少需要 JMP16(也基於 addin.def 檔案 minJmpVersion=16)。
@朱利安剛開始使用這個插件,但它似乎是 JMP 的一個很好的補充。 我想到了一些建議,這些建議可能值得在未來的版本中考慮:
- 在選單項目中新增訊息,表示這是一個加載項。 當有人想知道我的動態子集選單項目在哪裡時,可能會防止將來出現混亂(例如,我已經這樣做了對選定的列進行排序當我將其添加到“列”選單時)
- 啟用視窗的工具列。 如果您可以強制工具列與資料表中使用的工具列相同,那就更好了,但我不確定這是否可能(也許是一個願望清單項目)。 這將使直接從過濾的數據表啟動用戶最喜歡的分析變得非常快速(比在選單中找到它們更快)。
- 如果它適合某個地方,請添加原始表有多少行的計數。
我確實注意到了一些“問題”:
- 如果我要調整動態表的大小,然後過濾 -> 我的表有時會回到原始大小。 當舊框被刪除並新增框時,很可能會觸發此操作。 (在 Windows 10 上使用 JMP16)。
- 由於 IsEmpty({}) 是 0 而不是 1,初始化的 selectedColumns 的比較無法如預期進行。 N Items() > 0 應該可以工作。
- 當使用過濾後的資料建立新的子集時,我認為最好避免使用<< Select Rows(rowsSelected) ,然後使用選定的行進行子集化,因為這將導致對原始表進行「不必要的”選擇(這將導致速度減慢)。 相反,可以使用 Rows(selectedRows) 來完成子集化。 這也可能允許您刪除一些<<清除選擇。
我也認為可以做些什麼@斯布雷爾是建議(如果我理解正確的話),但它需要相當多的腳本編寫,並且當前的一些程式碼很可能需要重寫。 我的建議是添加一些控制項(儘管這個解決方案很容易引起一些混亂):
- 複選框/單選框將允許使用者使用摘要而不是直接的表子集。 摘要表將基於所選的過濾器列。 這也可以“隱藏”在大綱框中,但我認為最好向用戶顯示當前正在使用哪個選項。
- 當使用者找到他/她想要修改的值時,可以選擇該值。 這也將選擇原始表中的同一行(並且我們知道動態子集 << 取得選定列中的列)。 然後使用者可以按下一個按鈕,打開一個窗口,允許使用者更改該值。
- 值變更後重新運行動態子集以更新它
嗨塞巴斯蒂安,
我很高興我完全理解您面臨的挑戰! 這是一個有趣的問題,我對它的思考越多,我就越能想像透過匯總表或子集表來實現這一點的有用方法。 我絕對會牢記這一點,以防萬一發生一些變化,使之成為可能。
朱利安
你好@朱利安你的影片完美地描述了我設想的問題。我希望能夠在動態過濾器子集表中套用修復,但正如您所說,這是不可能的。
儘管如此,這是我經常依賴的一個很棒的工具。
多謝
賽巴斯蒂安
你好@斯布雷爾,
我想我更理解你在追求什麼。 我認為我們無法完全實現它,因為連結子集處理更改值的方式(我無法編寫腳本,以便匯總表中更改的值將更改原始表中的所有這些值)。 但是,我認為您可以在這裡做一些事情,即首先製作一個匯總表,然後在其上使用動態子集來追蹤異常值。 這是一個非常人為的範例,使用範例資料集,我這樣做是為了追蹤我希望更改的行,然後導航回原始表以更改這些值。 也許這樣的東西適合你的情況?
@朱利安Fit X by Y 在重新編碼和/或非常大的列表(>100 行)的上下文中沒有用。 當已經選擇了多個列時,是否可以選擇在連結到原始表的同時對所選列運行匯總,然後在生成的匯總表上顯示動態過濾器? 我嘗試了這種方式,但儘管禁用了“鎖定資料表”選項,但它似乎不允許修改結果表。
@斯布雷爾:我確實認為我理解您要在那裡做什麼,並且我可以看到使用更大的表來追蹤事情可能會變得複雜。 我不確定我能否想出一種簡單的方法來調整此加載項來完成此類事情。 但是,我想知道像 Fit Y by X 甚至 Graph Builder 這樣的平台是否有助於檢測兩個分類變數交叉處出現的異常水平。 例如,馬賽克圖可以很好地顯示獨特的交叉點,並且當有不合適的東西時,視覺上會很明顯。 例如,在您的範例中:

@朱利安我想到的是某種可用於「相對」重新編碼的動態摘要過濾。 例如,您可能有一個大表,但您可能只對幾列感興趣。 在這些列中,當使用為您提供動態子集的當前版本時,您可能會出現許多冗餘術語。
僅查看選定的一組列的唯一術語的選項將使修改變得更容易,同時密切關注術語之間的關係,這是使用重新編碼功能時無法輕鬆完成的事情。
我附上了一個範例表,其中將使用您的外掛程式檢查類型 1 和類型 2 列。 有一個字是錯誤的。 在與動態過濾相結合的摘要場景中,更容易識別錯誤並修復它。
New Table( "veggies",
Add Rows( 18 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values(
{"a", "b", "c", "d", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q"}
)
),
New Column( "Type 1",
Character,
"Nominal",
Set Selected,
Set Values(
{"tomatoes", "tomatoes", "tomatoes", "apple", "apple", "apple",
"carrots", "carrots", "carrots", "tomatoes", "tomatoes", "tomatoes",
"apple", "apple", "apple", "carrots", "carrots", "carrots"}
)
),
New Column( "type 2",
Character,
"Nominal",
Color Cells( {69, {17}} ),
Set Selected,
Set Values(
{"red", "green", "green", "red", "green", "red", "red", "red", "green",
"red", "green", "green", "red", "green", "red", "red", "blue", "green"}
),
Set Display Width( 55 )
)
)
@FN :按照現在的寫法,表中選擇的行不可能影響附加到過濾器的直方圖,但也許我們可以採取相反的方式。
我認為有兩種方法可以查看直方圖。 第一個是開啟表格上的摘要圖。 為此,請選擇“濾鏡”旁邊的紅色三角形,然後選擇“切換摘要圖”。 現在,當您變更篩選器時,您將看到每個欄位的直方圖更新。

另一個選擇是讓你的過濾器有條件。 您可以透過選擇“資料過濾器”旁邊的紅色三角形,然後選擇條件來執行此操作:

透過這樣做,一旦設定了過濾器,其餘過濾器僅顯示先前過濾器定義的子集中剩餘的值。
我希望這有幫助!
@斯布雷爾: 你能告訴我更多關於你在那裡的想像嗎? 如果您的目標是對資料進行一些匯總並希望動態過濾它,您可以使用“分析”>“製表”來實現此目的,然後在設定製表後,添加本地資料過濾器,您可以從紅色三角> 本地資料過濾器存取。 透過這種方式,您可以動態過濾清單並查看這些匯總統計資料會根據您定義的子集而變化。
很不錯。
顯示動態資料過濾器也有用嗎? 分佈應隨行選擇而變化。 也許有一個按鈕允許用戶手動優化這些?
非常酷的工具。 特別是,這對於在取消選擇「鎖定資料表」功能時需要了解相關列的內容的重新編碼非常有用。
在那些條件下。 如果還有一種方法(1)代替子集,能夠像目前的情況那樣進行匯總和動態過濾,並且(2)能夠捕獲腳本中的更改,那將非常有幫助。