Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiCiao,
Lavoro sull'automazione dell'analisi e necessità di rendere più generico lo script generato automaticamente.
Il flusso di lavoro consiste nel creare una tabella di riepilogo raggruppata in tre colonne con quattro colonne che ottengono valori derivati. Questo va bene.
Ora voglio creare grafici unidirezionali con una delle variabili di raggruppamento originali e anche raggruppare ulteriormente i grafici con una seconda variabile.
Raggruppamento: Ciclo, Passo, Passo Unico
4 separati Oneway by Cycle raggruppati Step.
Lo script generato automaticamente funziona bene sul mio file di prova. Il problema è come renderlo più generico.
Se guardo lo script, ci sono richiami specifici per il valore della colonna del passaggio
<<{Disponi in righe(4)}, Where(:Step == 1), Where(:Step == 1))
E nel test case ci sono 19 valori per step. Come devo fare per creare questo per essere flessibile al numero di passaggi? Vari file avranno un numero di passaggi diverso. Quali sono le migliori pratiche qui? Il mio risultato desiderato è avere i quattro grafici di fila con la casella di raggruppamento che ha anche il valore del passaggio mostrato (ora è in piccolo testo dopo i grafici) e robot per il numero di passaggi che potrebbe avere un file in arrivo.
Andy
dt1=Data Table( dt) <<SUMMARY></SUMMARY>
SceneggiaturaRe: Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiPotresti usare un Line Up Box?
New Window( "Row-Wise",
Line Up Box( N Col(2),
Oneway( Y( :weight ), X( :sex), By( :age ))
)
);
Re: Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiCiao,
Grazie mille txnelson! Ho apportato alcune modifiche, l'ho semplificato e l'ho fatto funzionare
Ho lavorato un po 'e sono arrivato a una soluzione. La disposizione delle trame può essere semplificata poiché la nuova finestra imposta la casella di ricezione per avere una disposizione di 4 trame e nel mio caso voglio che ogni quattro vadano insieme di seguito, posso semplicemente riempire dall'inizio in un semplice ciclo. Basta contare il numero di articoli, scorrere e aggiungerli alla scatola.
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 )} )
)
);
nw = New Window( "test", lub = Lineup Box( N Col( 4 ) ) );
numRows = N Items( view );
For( theRow = 1, theRow <= numRows, theRow++,
lub << append( Report(view[(theRow)]) <BR /> );
Andy
Re: Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiCiao,
Ricevo un errore attorno alla chiamata i++ nell'ultimo bit del codice. Non vedo una variabile, i, inizializzata in precedenza nel codice. A cosa si riferisce?
AndyRe: Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiDi seguito è riportato un esempio che mette i 4 grafici in un'unica riga e una riga per ciascuna colonna specificata nell'analisi

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: Come eseguire uno script per raggruppare per gestire numeri flessibili di gruppiHa fatto dei progressi.
La maggior parte del lavoro può essere gestita utilizzando l'operatore "Da".
Ciò che ancora manca è come organizzare i gruppi in gruppi di 4 in modo che le trame per ciascuno per raggruppamento siano sulla stessa linea.
Qualche idea
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 )} )
)
);