Comment créer des sous-catégories pour les lignes et les colonnes similaires à la tabulationJe travaille actuellement sur la création d'un tableau de données des résultats d'une requête SQL. Le tableau de données final a une configuration qui fusionne les groupes de colonnes partagées et fusionne également les lignes de valeurs partagées (voir Tableau 1).
Les données ont parfois des valeurs numériques, mais la plupart des résultats sont des chaînes telles que « Négatif » ou « < 0,1 ». La façon dont je résume le tableau de données avec les caractères/valeurs nominales consiste à transposer les résultats en fonction du type de test. Je peux regrouper les colonnes, mais lorsque j'envoie le tableau de données vers une nouvelle fenêtre sous forme de rapport ou vers une page de journal, les colonnes groupées n'apparaissent pas. Je ne peux pas utiliser Tabulate car il résume uniquement les valeurs numériques et il ne vous permettra pas non plus de conserver le formatage lorsque vous en faites un tableau de données. Je ne peux pas non plus colorer les cellules d'un tableau Tabulate. Je veux juste pouvoir ajouter des sous-catégories et des colonnes/lignes imbriquées comme le fait tabulate à une table de données normale. Je me demande s'il existe un moyen d'obtenir ce que je recherche dans JMP en utilisant le code JSL, et si ce n'est pas le cas, peut-il s'agir d'une demande de fonctionnalité ?
Tableau 1. Exemple de table finale

Personnalisation de massePartager et communiquer les résultatsles fenêtresRe : Comment créer des sous-catégories pour les lignes et les colonnes similaires à tabulerC'est ce que je pensais, mais j'ai pensé que je demanderais. Merci encore pour votre aide!
Re : Comment créer des sous-catégories pour les lignes et les colonnes similaires à tabulerJe ne pense pas que vous seriez capable de faire cela très facilement.En raison de la nature hiérarchique de l'arborescence d'affichage, vous ne pouvez pas simplement insérer une zone d'affichage de telle sorte que les objets qui n'étaient pas ses enfants deviennent ensuite ses enfants.Vous pourriez insérer un ColSpanBox , puis en utilisant <<CLONEBOX></CLONEBOX> vous pourriez insérer des enfants dans le ColSpanBox , mais à ce stade, vous feriez mieux de le créer à partir de zéro

Re : Comment créer des sous-catégories pour les lignes et les colonnes similaires à tabulerCela a l'air très prometteur !! Merci! Je vous ferai savoir si cela fonctionne.
Edit : j'ai passé la matinée à parcourir votre code. C'est un bon début pour moi de comprendre comment créer davantage de tableaux personnalisés. Merci! J'apprécie le temps et les efforts. Existe-t-il un moyen d'ajouter une zone span au-dessus des colonnes à une table déjà existante ? Par exemple, disons que j'ai organisé le tableau sans catégorisation supplémentaire. Je ne veux pas procéder colonne par colonne pour reconstituer le tableau. Je veux juste le faire apparaître ci-dessus. J'espère que cela a du sens.
Re : Comment créer des sous-catégories pour les lignes et les colonnes similaires à tabulerJMP ne vous permet pas de regrouper des lignes.Tabulate ne regroupe pas les lignes, il laisse simplement certaines lignes vides (voir ci-dessous).
Si vous regardez l'arborescence de Tabulate, vous remarquerez que JMP utilise des constructions spéciales telles que MultiTblStrColBox et MultiTblNumColBox pour créer le tableau du tabulation.Ce n'est pas quelque chose qui peut être créé en JSL par l'utilisateur.La meilleure chose à faire est d'utiliser le <<OBTENIR un="" rapport=""></OBTENIR> avec une gestion sophistiquée des groupes et des noms pour créer quelque chose de similaire avec TableBox -- auquel nous avons accès en JSL.Voici une fonction rapide " tabulaire " que j'ai créé et qui peut prendre un tableau qui a des couleurs spécifiées sur ses cellules avec n'importe quel regroupement de colonnes que vous pourriez désirer et crée quelque chose comme un tableau.Vous devez spécifier un tableau et une colonne catégorielle spéciale dans :
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>
