Actualmente estoy trabajando en la creación de una tabla de datos de resultados de una consulta SQL. La tabla de datos final tiene una configuración que fusiona los grupos de columnas compartidas y también fusiona las filas de valores compartidos (consulte la Tabla 1).
Los datos a veces tienen valores numéricos, pero la mayoría de los resultados son cadenas como "Negativo" o "< 0,1". La forma en que resumo la tabla de datos con los caracteres/valores nominales es transponiendo los resultados según el tipo de prueba. Puedo agrupar las columnas, pero cuando envío la tabla de datos a una nueva ventana como un informe o una página de diario, no muestra las columnas agrupadas. No puedo usar Tabulate porque solo resume valores numéricos y tampoco le permitirá mantener el formato cuando lo convierte en una tabla de datos. Tampoco puedo colorear las celdas dentro de una tabla Tabulate. Solo quiero la capacidad de agregar subcategorías y columnas/filas anidadas como lo hace tabulate en una tabla de datos normal. Me pregunto si hay alguna forma de lograr lo que busco dentro de JMP usando el código JSL y, si no la hay, ¿puede ser una solicitud de función?
Tabla 1. Ejemplo de Mesa Final

JMP no le permite agrupar filas.Tabulate no agrupa filas, simplemente deja algunas filas en blanco (ver más abajo).
Si observa la estructura de árbol de Tabulate, notará que JMP usa construcciones especiales como MultiTblStrColBox y MultiTblNumColBox para crear la tabla del tabulado.Estos no son algo que el usuario pueda crear en JSL.Lo siguiente mejor es utilizar el <<OBTENER como="" informe=""></OBTENER> con algún grupo elegante y manejo de nombres para crear algo similar con TableBox -- al que tenemos acceso en JSL.Aquí hay una función rápida " tabular " que armé que puede tomar una tabla que tiene colores específicos en sus celdas con cualquier agrupación de columnas que desee y crea algo como tabular.Debe especificar una tabla y una columna categórica especial dentro de:
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>

Esto se ve muy prometedor!! ¡Gracias! Te dejaré saber si funciona.
Editar: Pasé la mañana revisando tu código. Es un gran comienzo para mí descubrir cómo crear más tablas personalizadas. ¡Gracias! Agradezco el tiempo y el esfuerzo. ¿Hay alguna manera de agregar un cuadro de intervalo sobre las columnas a una tabla ya existente? Por ejemplo, supongamos que organicé la tabla sin la categorización adicional. No quiero ir columna por columna para armar la tabla. Solo quiero que aparezca arriba. Espero que tenga sentido.