So erstellen Sie ein Skript für die Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenHallo,
Wir arbeiten an der Automatisierung der Analyse und müssen das automatisch generierte Skript allgemeiner gestalten.
Der Arbeitsablauf besteht darin, eine Übersichtstabelle zu erstellen, die nach drei Spalten gruppiert ist, wobei vier Spalten abgeleitete Werte erhalten. Das ist gut.
Jetzt möchte ich Einwegdiagramme mit einer der ursprünglichen Gruppierungsvariablen erstellen und die Diagramme zusätzlich nach einer zweiten Variablen gruppieren.
Gruppierung: Zyklus, Schritt, eindeutiger Schritt
4 separate, nach Zyklus gruppierte Schritte.
Das automatisch generierte Skript funktioniert mit meiner Testdatei einwandfrei. Die Frage ist, wie man es allgemeiner gestalten kann.
Wenn ich mir das Skript anschaue, gibt es spezielle Aufrufe für den Schrittspaltenwert
<<{In Zeilen anordnen(4)}, Where(:Step == 1), Where(:Step == 1))
Und im Testfall gibt es 19 Werte für Schritt. Wie soll ich bei der Gestaltung vorgehen, um flexibel auf die Anzahl der Schritte reagieren zu können? Verschiedene Dateien haben eine unterschiedliche Anzahl von Schritten. Was sind hier Best Practices? Mein gewünschtes Ergebnis ist, dass die vier Diagramme in einer Reihe angezeigt werden, wobei im Gruppierungsfeld auch der Wert des angezeigten Schritts angezeigt wird (jetzt wird er in kleinem Text hinter den Diagrammen angezeigt) und dass die Anzahl der Schritte, die eine eingehende Datei haben könnte, automatisch angezeigt wird.
Andy
dt1=Data Table( dt) <<SUMMARY></SUMMARY>
Datenmischung und -bereinigungBetreff: So erstellen Sie ein Skript zur Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenKönnten Sie eine Line-Up-Box verwenden?
New Window( "Row-Wise",
Line Up Box( N Col(2),
Oneway( Y( :weight ), X( :sex), By( :age ))
)
);
Betreff: So erstellen Sie ein Skript zur Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenHallo,
Vielen Dank, Txnelson! Habe einige Optimierungen vorgenommen, es vereinfacht und zum Laufen gebracht
Ich habe ein wenig daran gearbeitet und bin zu einer Lösung gekommen. Die Anordnung der Plots kann vereinfacht werden, da das neue Fenster die Empfangsbox so einstellt, dass sie eine Anordnung von 4 Plots hat. In meinem Fall möchte ich, dass alle vier Plots zusammen in einer Reihe liegen. Ich kann einfach von Anfang an in einer einfachen Schleife füllen. Zählen Sie einfach die Anzahl der Artikel, durchlaufen Sie sie und legen Sie sie in die Box.
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
Betreff: So erstellen Sie ein Skript zur Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenHallo,
Ich erhalte eine Fehlermeldung rund um den i++-Aufruf im letzten Teil des Codes. Ich sehe keine Variable, i, die früher im Code initialisiert wurde. Worauf bezieht es sich?
AndyBetreff: So erstellen Sie ein Skript zur Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenUnten sehen Sie ein Beispiel, bei dem die vier Diagramme in einer einzigen Zeile und einer Zeile für jede in der Analyse angegebene Spalte zusammengefasst werden

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++;
)
)
;
Betreff: So erstellen Sie ein Skript zur Gruppierung nach, um eine flexible Anzahl von Gruppen zu verwaltenHabe einige Fortschritte gemacht.
Der Großteil der Arbeit könnte mit dem „By“-Operator erledigt werden.
Was noch fehlt, ist, wie man die Gruppen in 4er-Gruppen anordnet, sodass die Diagramme für jede Gruppierung auf derselben Linie liegen.
Irgendwelche Gedanken
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 )} )
)
);