使用 JSL 連接所有資料表你好,我想連接所有開啟的資料表。 但是,數據表的數量可能會有所不同,我希望腳本能夠適應不同數量的表。
這是我想要做的程式碼,但是我想將其概括:
資料表( N 表() ) << 連結(
數據表( (N 表()-1) ),
數據表( (N 表()-2) ),
數據表( (N 表()-3) ),
數據表( (N 表()-4) ),
數據表( (N 表()-5) ),
輸出表(“所有溫度”),
建立來源列
);
這是我嘗試過的程式碼,出現輸出表未解析名稱的錯誤(在本例中 noTemps 為 6 )
資料表( N 表() ) << 連結(
對於( i = 1, i < (noTemps), i++,
數據表( (N 表()-i) ),
);
輸出表(“所有溫度”),
建立來源列
);
自動化和腳本編寫資料存取資料混合與清理回覆:使用 JSL 連線所有資料表您使用的是哪個版本的 JMP?
回覆:使用 JSL 連線所有資料表如果 JMP16+ 我會使用 for every 並循環遍歷表列表
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = dt1 << Subset(All Rows, Selected Columns(0), Output Table("DEMO"));
dts = Get Data Table List();
dt_first = Remove From(dts, 1); // remove first table as we concatenate to that
For Each({dt}, dts,
dt_first << Concatenate(
dt,
"Append to first table",
"Create source column"
);
// Close(dt, no save);
);回覆:使用 JSL 連線所有資料表感謝您的回复,但是我正在努力使其適用於我的情況(儘管我認為這應該相對容易)。
dt是什麼? 我收到名稱未解決的錯誤。
我也沒有分配 dt1,因為所有表都已從腳本的前一部分打開。 如何在不直接調用特定表的情況下分配它?
如果我確實像下面這樣分配 dt1,則會產生演示表,該表充滿了單字 demo。
dt1 = 開啟(“$DOCUMENTS/Plot_Conduction_Losses/模組 6/DUT2/100C.jmp”);
抱歉,如果這解釋得不好而且囉嗦。
回覆:使用 JSL 連線所有資料表dt1 和 dt2 僅用於演示目的。 您可以使用 Get Data Table List() 取得所有開啟的表的參考。 您使用的是哪個 JMP 版本(For 都需要 JMP16+,但可以用 For 取代)? dt是對資料表的引用,可以從以下資料表引用清單中找到dts。
回覆:使用 JSL 連線所有資料表我有 JMP 17。
我現在明白了 dt 部分,很抱歉造成混亂。
dts = 取得資料表列表();
dt_first = 刪除自(dts, 1); // 當我們連接到第一個表時刪除它
對於每個({dt},dts,
dt_first << 連接(
德特,
//追加到第一個表,
「建立來源列」,
輸出表(“所有溫度”),
);
//關閉(dt,不儲存);
);
這不完全是我想要的。 它產生 6 個新資料表,全部與 dt_first 連接。我希望它是一個新的數據表。 如果我取消註解附加到第一個表格行。它產生 6 個來源列,我無法在進一步分析中使用它們進行排序。
回覆:使用 JSL 連線所有資料表不記得你可以使用有連接的列表
Names Default To Here(1);
Open("$SAMPLE_DATA/Students.jmp");
Open("$SAMPLE_DATA/Students1.jmp");
Open("$SAMPLE_DATA/Students2.jmp");
dts = Get Data Table List();
dt_first = Remove From(dts, 1)[1]; // remove first table as we concatenate to that
dt_result = dt_first << Concatenate(dts, "Create source column");
也必須/應該從Remove From() 取得第一個索引,因為Remove From() 傳回一個清單。