根據列名稱列表拆分錶JMP 社區您好,希望您能幫助我解決這個問題:
我製作了一個腳本,允許用戶使用給定(待輸入)因子計算多個樣品濃度的 1x、2x 和/或 3x SD 值。 1x、2x 和/或 3x SD 值均可通過 3 個複選框進行選擇。 第一部分工作完美。
根據選定的複選框數量,生成的數據表提供了可變數量的列,我希望將其拆分為新的數據表。
我嘗試構建第二個腳本,根據存在的所有 SD 列(始終從第 3 列開始)拆分數據表,但沒有成功。 到目前為止,這是我的腳本:
Names Default To Here( 1 );
dt1 = Data Table( "SD Calculation" );
//Get list of Column names
ColList = dt1 << Get Column Names();
//Split dt1 based on ColList
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split( ColList[3] ),
Remaining Columns( Drop All ),
Sort by Column Property
);
生成的拆分錶如下所示,並且缺少大部分數據:

這就是它應該的樣子(我只能通過指定所有列名稱來實現這一點,但是,並非所有列都會出現在每個表中(它基於用戶選擇):

當選擇所有 SD 計算時(5 個樣品濃度為 ±1-3 SD),應存在 30 列。
我的腳本的目標:
nomRP 值為:50、71、100、141 和 200,並且可以為每個 nomRP 值計算 1-3x SD 值。 所有計算結果應拆分在新的數據表中。 有了這些數據,我想在圖形生成器中構建一個圖形,顯示基於計算的 SD 值的範圍。
親切的問候,
皮姆。
-編輯:添加“SD 計算”表。
數據混合和清理回复:根據列名列表拆分錶非常感謝 Pim/Hadley 就該主題提出的問題/答案!
我意識到這是一篇舊帖子,但想為後來的人留下一點麵包屑。
我今天試圖按照上面發布的哈德利解決方案做類似的事情,同時理解嵌套Eval(Eval Expr(Expr())) 方法(仍在研究後者......)。
玩了一下後,我發現:
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(Eval Expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);給我的結果與哈德利的解決方案相同:
Eval(
Eval Expr(
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);
)
);
回复:根據列名列表拆分錶哈德利,這正是我要找的。
非常感謝您,也感謝您分享有關Eval(Eval Expr(Expr())). 這將在我未來的腳本冒險中派上用場!
回复:根據列名列表拆分錶你好,
我認為這是 Eval(Eval Expr(Expr())) 會有所幫助的時候之一。看一下下面的代碼,看看它是否符合您的期望。也這是一個帖子本主題解釋了這些類型的方法。
Names Default to Here(1);
dt1=Data Table("SD Calculation");
//Get list of Column names
ColList=dt1<<GET column="" names=""></GET>