Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?Salut,
Je voulais exécuter plusieurs tests t où j'ai une liste de plusieurs X et Y. Existe-t-il un moyen de faire cela à l'aide d'un script ? J'ai légèrement modifié le script que j'utilise pour le sélecteur à 1 colonne mais je n'arrive pas à comprendre comment les faire tous les deux en même temps. Par exemple ce petit test (3x3) :
Oneway(
Y(:Name("A")),
X(:Name("1")),
t Test(1),
Column Switcher(:Name("A"), {:Name("A"), :Name("B"), :Name("C")}),
Column Switcher(:Name("1"), {:Name("1"), :Name("2"), :Name("3")})
);
rpt = Current Report();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox(1)] << get scriptable object;
colswitch_list = colswitcher_obj << get list;
/* Loop through each column in the colswitch_list */
For(i = 1, i <= N Items(colswitch_list), i++,
/* Change here */
dt1 = rpt[Outline Box("t Test")][Table Box(1)] << make combined data table;
/* Concatenate the tables */
If(i == 1,
main_tb = dt1;
main_tb << Set Name("All");
,
Try(main_tb << Concatenate(dt1, Append to First Table));
Close(dt1, No Save);
);
/* Close temporary tables and switch next column */
colSwitcher_obj << Next;
);
Automatisation et scriptsRe : Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?Vous utilisez de mauvaises références d'objet de sélecteur de colonnes dans vos boucles (la boucle interne qui contient N Items (colswitch_list2) devrait changer colSwitcher_obj2 << Next).

Utiliser aussi

lors de la publication de JSL sur la communauté JMP, car cela facilite grandement la lecture du message.
Re : Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?En effet vous avez raison, maintenant cela fonctionne parfaitement pour un 10x10 de colonnes (voir script ci-dessous).
Mais j'ai un problème : si je n'ai pas exactement le même nombre de colonnes X que de colonnes Y, la commutation ne fonctionne pas ! Une idée s'il vous plaît de ce que je fais de mal ?
// Analyse et sélecteurs de colonnes
Sens Unique(
Y(:Nom("553")),
X(:Nom("1")),
tTest(1),
Sélecteur de colonnes(:Name("1"), {:Name("1"), :Name("2"), :Name("3"), :Name("4"), :Name("5" ), :Nom("6"), :Nom("7"), :Nom("8"), :Nom("9"), :Nom("10")}),
Sélecteur de colonnes(:Name("553"), {:Name("553"), :Name("554"), :Name("555"), :Name("556"), :Name("557" ), :Nom("558"), :Nom("559"), :Nom("560"), :Nom("561"), :Nom("562")}));
//Création du rapport
rpt = Rapport actuel ();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << obtenir un objet scriptable ;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << obtenir un objet scriptable ;
colswitch_list = colswitcher_obj << obtenir la liste ;
colswitch_list2 = colswitcher_obj2 << obtenir la liste ;
// Boucle sur chaque variable Y
Pour (j = 1, j <= N éléments (colswitch_list), j++,
// Boucle sur chaque variable X
Pour(k = 1, k <= N éléments(colswitch_list2), k++,
/* Changer ici */
dt1 = rpt[Outline Box( "t Test" )][Table Box( 1 )] << Créer un tableau de données combiné ;
/* Concaténer les tables */
Si(j == 1 & k == 1,
main_tb = dt1 ;
main_tb << Définir le nom( "Tous" );
,
Try( main_tb << Concatenate( dt1, Ajouter au premier tableau ) );
Fermer( dt1, Pas de sauvegarde );
);
// Passer à la colonne X suivante
colSwitcher_obj << Suivant ;
attendre(0);
);
// Passer à la colonne Y suivante
colSwitcher_obj2 << Suivant ;
attendre(0);
);
Re : Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?Difficile de le dire sans rien connaître de vos données. Vous pourriez par exemple rencontrer un problème où l’une de vos colonnes contient un grand nombre de catégories, ce qui pose des problèmes. Peut-être en ajoutant wait(0); after each << next pourrait l'aider un peu, mais le script sera probablement toujours très lent.
De plus, je pense que vous utilisez au moins un nombre maximum incorrect pour votre variable k (ne devrait-il pas s'agir de N Items (col_switch_list2)).
Re : Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?J'ai résolu mon problème avec le script suivant, mais lorsque je l'exécute sur la base de données complète, JMP plante (problème de mémoire, je suppose), avez-vous une idée de comment contourner le problème de mémoire ?
Sens Unique(
Y( :Nom( "A" ) ),
X( :Nom( "1" ) ),
tTest( 1 ),
Sélecteur de colonnes( :Name( "1" ), {:Name( "1" ), :Name( "2" ), :Name( "3" )} ),
Sélecteur de colonnes (
:Nom( "A" ),
{:Nom( "A" ), :Nom( "B" ), :Nom( "C" )}
)
);
rpt = Rapport actuel ();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << obtenir un objet scriptable ;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << obtenir un objet scriptable ;
colswitch_list = colswitcher_obj << obtenir la liste ;
// Boucle sur chaque variable Y
Pour (j = 1, j <= N éléments (colswitch_list), j++,
// Boucle sur chaque variable X
Pour(k = 1, k <= N éléments(colswitch_list), k++,
/* Changer ici */
dt1 = rpt[Outline Box( "t Test" )][Table Box( 1 )] << Créer un tableau de données combiné ;
/* Concaténer les tables */
Si(j == 1 & k == 1,
main_tb = dt1 ;
main_tb << Définir le nom( "Tous" );
,
Try( main_tb << Concatenate( dt1, Ajouter au premier tableau ) );
Fermer( dt1, Pas de sauvegarde );
);
// Passer à la colonne X suivante
colSwitcher_obj << Suivant ;
);
// Passer à la colonne Y suivante
colSwitcher_obj2 << Suivant ;
);
Re : Existe-t-il un moyen de créer simultanément un rapport pour un sélecteur à 2 colonnes ?Y a-t-il une raison spécifique d'utiliser le sélecteur de colonnes pour cela ? Vous pouvez simplement parcourir vos colonnes, recréer le rapport au fur et à mesure et extraire les résultats.