根据列名称列表拆分表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>