我目前正在努力创建 SQL 查询结果的数据表。 最终数据表的设置合并了共享列组并合并了共享值的行(参见表 1)。
数据有时具有数值,但大多数结果是“Negative”或“< 0.1”等字符串。 我用字符/标称值总结数据表的方法是根据测试类型转置结果。 我可以对列进行分组,但是当我将数据表作为报告发送到新窗口或日记页面时,它不会显示分组的列。 我无法使用制表,因为它仅汇总数值,并且在将其放入数据表时也不允许您保留格式。 我也无法为制表表中的单元格着色。 我只希望能够像 tabulate 一样向常规数据表添加子类别和嵌套列/行。 我想知道是否有任何方法可以使用 JSL 代码在 JMP 中实现我正在寻找的功能,如果没有,这是否可以成为功能请求?
表格1。 决赛桌示例

我就是这么想的,但我想我会问。 再次感谢您的帮助!
我认为你不会轻易做到这一点。由于显示树的层次性质,您不能简单地插入一个显示框,使不是其子对象的对象成为其子对象。你可以插入一个列跨框,然后使用<<克隆盒你可以将孩子插入列跨框,但那时你最好从头开始创建它

这看起来非常有希望! 谢谢你! 我会让你知道它是否有效。
编辑:花了一个早上的时间检查你的代码。 对于我了解如何构建更多自定义表格来说,这是一个很好的开始。 谢谢你! 我很感激您的时间和精力。 有没有办法在现有表的列上方添加跨度框? 例如,假设我组织了表格,但没有进行额外的分类。 我不想逐列拼凑表格。 我只是想把它弹出上面。 希望这是有道理的。
JMP 不允许您对行进行分组。制表不会对行进行分组,它只是将某些行留空(见下文)。
如果您查看制表的树结构,您会注意到 JMP 使用特殊的结构,例如多表结构列框和多表编号列框创建表格的表格。这些不是用户可以在 JSL 中创建的东西。下一个最好的事情是利用<<获取报告使用一些奇特的组和名称处理来创建类似的东西表格框——我们确实可以在 JSL 中访问它。这是一个快速功能“表格式的“我把它放在一起,可以采用一个在单元格上指定颜色的表格,以及您可能想要的任何列分组,并创建类似制表之类的内容。您确实需要在其中指定一个表和特殊的分类列:
Names Default To Here( 1 );
table = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
theGroup = table << Group Columns( "BP", :BP 8M :: :BP 8W );
theGroup = table << Group Columns( "ELSE", {:BP 12W, :BP 6W} );
For( i = 1, i <= N Cols( table ), i++,
For Each Row( table,
Column( table, i ) << Color Cells( Eval List( Repeat( {Random Uniform( 0.9, 1 )}, 3 ) ), Row() )
);
);
tabulatish = Function( {table, category},
{Default Local},
column names = table << Get Column Names( "String" );
For( i = 1, i <= N Items( column names ), i++,
If( Uppercase( category ) == Uppercase( column names[i] ),
category = column names[i];
Break();
)
);
Eval( Parse( Eval Insert( JSL Quote(
table << Sort( By( :Name("^category^") ), Order( "Ascending" ), "Replace Table" );
) ) ) );
categories = Associative Array( Column( table, category ) ) << Get Keys;
locs = Repeat( {""}, N Rows( table ) );
For( i = 1, i <= N Items( categories ), i++,
locs[(Loc( Column( table, category ) << Get Values, categories[i] ))[1]] = categories[i]
);
nt = New Table( "temp", <<NEW column=""></NEW>
