回复:使用 JSL 腳本的下一級自動化添加@Jordan_Hiller和@ChristianBille對此評論。
謝謝大家把這個放在一起。 我有一個關於“泛化”的後續問題,它更多地與我缺乏腳本能力有關。 通常在我的工作流程中,我需要“選擇所有列”然後做一些事情,無論是匯總、分組、探索缺失值等。但是,我有數千列,它們在每個新數據表中都有不同的名稱,所以當它提示我找不到一個特定的列時,我不能只替換 5,000 列(這需要幾個小時)。 我想知道我是否可以先對列進行分組,然後在該組上執行剩餘的工作流程步驟。 我可以給小組起一個通用名稱。
另一種方法是嘗試通過名稱中的屬性來選擇列,如下面的腳本所示。 是否有辦法將其腳本化到工作流的下一步中包含此腳本生成的 SELECTED 列的位置? 例如,如果我想轉置名稱中帶有“the”的所有列,是否可以將該腳本嵌入到工作流中? 我正在考慮如何避免在每個文件中重新編碼列名,儘管這是另一種選擇!
我意識到 Workflow Builder 可能在您要處理許多格式相同的表格時效果最好,但我想弄清楚當每個表格略有不同時我是否可以讓它合作。
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
回复:使用 JSL 腳本的下一級自動化如果我理解你的問題, @abmayfield ,您問的是 JMP17 工作流是否可以容納大量不斷變化的列名。 我會說是的,這是可能的,但必須在工作流中插入一些自定義 JSL。
一種好的方法是讓您的工作流/腳本作用於用戶選擇的列前運行工作流程。
下面是一個使用血壓樣本數據集的示例。
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
不管你如何攻擊這個,解決方案可能會涉及 JSL列出. 稍微了解一下列表可以讓您獲得新的編碼超能力!
使用 JSL 腳本實現下一級自動化影片於 2024 年 8 月更新。
工作流程是一種無程式碼方式,可以自動執行您經常或日常使用的分析和報告。此外,您還可以將工作流程轉換為 JSL 腳本,以提供流暢的使用者體驗和更精美的演示文稿,並建立加載項以與其他人共用。該演示展示瞭如何理解和修改工作流程腳本並使它們對於新資料和新用戶更加靈活的基礎知識。它假設您具有創建 JMP 工作流程的一些背景。
這個案例研究使用了三個來源,我們使用這些來源使用 2015-2017 年的資料建立工作流程,然後製作一個可以處理後續年份資料的腳本。
隨附的 .zip 檔案包含您練習所需的所有文件,包括兩個版本的育兒 Excel 資料和育兒分析 JMP 外掛程式。
請參閱如何:
- 了解 JSL 的一些基本組件
- 建立工作流程
- 儲存工作流程腳本
- 編輯腳本以概括新數據和新用戶
- 根據需要新增使用者輸入機制(選擇檔案、列對話框等)
- 選擇一個文件
- 建立 JSL 以根據特定條件選擇文件
- 預設為目前開啟的資料表
- 選擇一列,然後從對話方塊中卸載所選列,以便稍後在腳本中對其進行操作。
- 使用嵌入式報告列切換器而不是選擇列
- 可以選擇將腳本儲存為 JMP 插件以進行分發
- 使用“檔案”>“新建”>“加載項”建立加載項
- 建立選單項目和/或工具列項目來啟動腳本
- 包括數據文件、PDF 等。
- 安裝加載項並與其他可透過雙擊 *.jmpaddin 檔案進行安裝的使用者共用
Jordan Hiller @Jordan_Hiller在現場網路研討會上回答的問題:
Q:如果我的工作流程在此過程中產生一個新表,然後透過後續步驟呼叫該新表,我會遇到問題,因為新形成的表將被賦予一個難以預測的名稱,例如「untitled 5. 」這一步是否可以以類似的方式「推廣」?
答:特別是當您使用「表格」選單中的內容(例如「堆疊」、「分割」和「轉置」)以及使用「堆疊」、「分割」、「轉置」建立的內容時,您會遇到這種情況。除非您給它們一個明確的名稱,否則它們將被稱為 u=Untitled 17 或 Untitled 32。

Renamed split table重新命名分割表
Q:如果 JSL 腳本在沒有 Workflow Builder 的情況下執行,如何將其轉換為工作流程?
答:是的,您可以建立新的工作流程自訂操作,然後將腳本複製並貼上到視窗中,或將腳本分解為單獨的自訂操作。
Q:您可以在 Workflow Builder 中點擊“記錄”,然後執行您的腳本嗎? WFB 會捕捉腳本的步驟嗎?
答:在 JMP 17 及更早版本中,它不會捕捉步驟。但是,JMP 18 工作流程確實會擷取在工作流程記錄時執行的腳本。
Q:當使用「by」變數執行擬合模型時,您有什麼建議嗎?工作流程保存了一個實例,裡面有每個類別的細分?但是當欄位有了新類別時,如何使其更通用?
答:在 JSL 中按組編寫腳本有點棘手。您必須知道如何處理 JSL 清單。我建議您諮詢 JMP 使用者社群或向使用者社群提交問題,您會在那裡得到一些很好的建議。
Q:是否有一個路徑變數指向目前運行腳本所在的目錄?
答:不,腳本沒有路徑變數。你可以解決這個問題。很多時候,當您在 JMP 腳本中指定檔案時,如果該檔案位於您正在執行的相同腳本中的相同路徑/目錄/資料夾中,則可以從檔案名稱中刪除該路徑/目錄並使用相對路徑。見下文。
資源

自動化和腳本編寫回覆:使用 JSL 腳本實現下一級自動化您可以在 Workflow Builder 中點擊“記錄”,然後執行您的腳本嗎? WFB 會捕捉腳本的步驟嗎?
Jmp18:是的
回覆:使用 JSL 腳本實現下一級自動化謝謝你@hogi !我修改了上面問題的答案。正如 hogi 所指出的, JMP 18 工作流程確實捕捉在工作流程記錄時執行的腳本。