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

JMP 不允许您对行进行分组。制表不会对行进行分组,它只是将一些行留空(见下文)。
如果您查看 Tabulate 的树形结构,您会注意到 JMP 使用特殊结构,例如MultiTblStrColBox和MultiTblNumColBox创建表格的表格。这些不是用户可以在 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>

这看起来很有希望!! 谢谢! 我会让你知道它是否有效。
编辑:花了一上午的时间浏览您的代码。 弄清楚如何构建更多自定义表对我来说是一个很好的开始。 谢谢! 我很感激时间和精力。 有没有办法将列上方的跨度框添加到已经存在的表中? 例如,假设我在没有额外分类的情况下组织了表格。 我不想逐列拼凑表格。 我只想在上面弹出它。 希望这是有道理的。