Comment script group by pour gérer un nombre flexible de groupesSalut,
Travailler sur l'automatisation de l'analyse et besoin de rendre le script généré automatisé plus générique.
Le flux de travail consiste à créer un tableau récapitulatif regroupé par trois colonnes avec quatre colonnes obtenant des valeurs dérivées. C'est bon.
Maintenant, je veux créer des tracés à sens unique avec l'une des variables de regroupement d'origine et également regrouper les tracés par une deuxième variable.
Regroupement: cycle, étape, étape unique
4 étapes distinctes groupées Oneway par Cycle.
Le script généré automatiquement fonctionne bien sur mon fichier de test. Le problème est de savoir comment le rendre plus générique.
Si je regarde le script, il y a des appels spécifiques pour la valeur de la colonne d'étape
<< {Disposer en lignes (4)}, Où (: Étape == 1), Où (: Étape == 1))
Et dans le cas de test, il y a 19 valeurs pour step. Comment dois-je procéder pour que cela soit flexible au nombre d'étapes? Différents fichiers auront des nombres d'étapes différents. Quelles sont les meilleures pratiques ici? Mon résultat souhaité est d'avoir les quatre parcelles d'affilée avec la zone de regroupement ayant également la valeur de l'étape indiquée (maintenant elle est en petit texte après les parcelles) et les robots au nombre d'étapes qu'un fichier entrant pourrait avoir.
Andy
dt1=Data Table( dt) <<SUMMARY></SUMMARY>
ScriptingRe: Comment script group by pour gérer un nombre flexible de groupesJ'ai fait des progrès.
La majeure partie du travail pourrait être gérée en utilisant l'opérateur "Par".
Ce qui manque encore, c'est de savoir comment organiser les groupes en groupes de 4 pour que les parcelles de chacun par groupement soient sur la même ligne.
Des pensées
Andy
view = dt1 << Oneway(
Y( {:"Min(TV Pres (torr))"n ,:"Min(DS Pres (torr))"n,:"Max(TV Pres (torr))"n, :"Max(DS Pres (torr))"n}),
X( :Cycle ),
by (:Step),
Quantiles( 1 ),
Means( 1 ),
Mean Diamonds( 0 ),
Box Plots( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Grand Mean( 0 ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);Re: Comment script group by pour gérer un nombre flexible de groupesVoici un exemple qui met les 4 graphiques sur une seule ligne, et une ligne pour chaque colonne spécifiée dans l'analyse

Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA\big class.jmp" );
// restrict to 4 ages to match the 4 level requirement
dt1 << select where( :age >= 16 );
dt1 << delete rows;
// Create a window to place the output in
nw = New Window( "test", lub = Lineup Box( N Col( 4 ) ) );
// Run the analysis with a By clause
view = dt1 << Oneway(
invisible,
Y( :height, :weight ),
X( :sex ),
Quantiles( 1 ),
Means( 1 ),
Box Plots( 1 ),
Mean Diamonds( 1 ),
by( :age ),
SendToReport(
Dispatch( {}, "Quantiles", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} )
)
);
// Take the elements from the outout and place in the window
// The display produces all levels of the by across one level
// of by group and then moves onto the next by group. Therefore
// the displays need to be picked across the full range of outputs
// to get the four grqaphs aligned
numCols = N Items( view ) / 4;
For( col = 1, col <= numCols, col++,
For( theRow = 1, theRow <= 4, theRow++,
lub << append( Report( view[(theRow - 1) * numCols + col] ) );
i++;
)
)
;
Re: Comment script group by pour gérer un nombre flexible de groupesSalut,
J'obtiens une erreur autour de l'appel i ++ dans le dernier bit du code. Je ne vois pas de variable, i, initialisée plus tôt dans le code. À quoi cela fait-il référence?
Andy