Ordnen Sie in Reihen nach Gruppen anHi,
Hier ist das Problem, das ich zu lösen versuche:
6 kontinuierliche Y-Variablen (Y1, Y2, ... Y6), dieselbe kontinuierliche X-Variable (1) und Proben-ID-Feld (SID).
Ich mache eine BiVariate-Fit-Gruppierung nach SID. Ich möchte, dass alle 6 Plots in einer Reihe und mit jeder SID-Gruppe sind.
SID=1
Y1, Y2, Y3, Y4, Y5, Y6,
SID=2
Y1, Y2, Y3, Y4, Y5, Y6,
......
Wie würde ich das scripten? Die Ys und Xs sind bekannt und festgelegt, während die Anzahl der Proben-IDs variiert.
Andy
Betreff: Ordnen Sie in Reihen nach GruppenIch denke, dieser Weg könnte einfacher sein und Ihnen das gewünschte Layout geben:
New Window( "Fitness - Bivariate",
V List Box(
Fit Group(
Bivariate( Y( :Age ), X( :MaxPulse ) ),
Bivariate( Y( :Weight ), X( :MaxPulse ) ),
Bivariate( Y( :Oxy ), X( :MaxPulse ) ),
Bivariate( Y( :Runtime ), X( :MaxPulse ) ),
Bivariate( Y( :RunPulse ), X( :MaxPulse ) ),
Bivariate( Y( :RstPulse ), X( :MaxPulse ) ),
<<{Arrange in Rows( 2 )},
By( :Sex )
),
Fit Group(
Bivariate( Y( :Age ), X( :MaxPulse ) ),
Bivariate( Y( :Weight ), X( :MaxPulse ) ),
Bivariate( Y( :Oxy ), X( :MaxPulse ) ),
Bivariate( Y( :Runtime ), X( :MaxPulse ) ),
Bivariate( Y( :RunPulse ), X( :MaxPulse ) ),
Bivariate( Y( :RstPulse ), X( :MaxPulse ) ),
<<{Arrange in Rows( 2 )},
By( :Sex )
)
)
);
Betreff: Ordnen Sie in Reihen nach GruppenDies zeigt eine Möglichkeit, das Layout zu steuern, aber das resultierende Array von Plots ist die Transponierung dessen, was Sie wollen.
New Window( "In a Row",
Line Up Box( N Col( 2 ),
Bivariate(
Y( :age, :weight, :oxy, :runtime ),
X( :runpulse ),
By( :sex )
)
)
);
Betreff: Ordnen Sie in Reihen nach GruppenDer Code von txnelson erledigt den Job, obwohl ich in seinem Beispiel die Codezeile auskommentieren musste
//dt << Spalten löschen ( Index ( 9, 129 ) ); damit es läuft.
Ich muss zugeben, ich verstehe es nicht ganz und bin bei dieser Zeile etwas gestolpert
dt << wählen wo ( : SID == Anz ( SIDgrps [ ich ] ) ) ; da meine ID eigentlich Zeichen ist. Ich habe Num() entfernt, damit es funktioniert.
Die Lösung von Mark führt nur die Gruppierung nach SID durch, gruppiert die Diagramme jedoch nicht in Zeilen.
Andy
Betreff: Ordnen Sie in Reihen nach GruppenAus Ihrer Beschreibung geht hervor, dass Sie nur SID in der By-Rolle verwenden müssen.
Bivariate(
Y( :Y1, :Y2, :Y3, :Y4, :Y5, :Y6 ),
X( :X ),
By( :SID )
);
Betreff: Ordnen Sie in Reihen nach GruppenHier ist ein Beispielskript mit einer Methodik, die ich oft verwendet habe und die meiner Meinung nach die gewünschten Ergebnisse liefert.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Setup data to look somewhat like your data
dt << delete columns( 1, 2, 3 );
Column( dt, 1 ) << set name( "SID" );
Column( dt, 2 ) << set name( "X" );
Column( dt, 3 ) << set name( "Y1" );
Column( dt, 4 ) << set name( "Y2" );
Column( dt, 5 ) << set name( "Y3" );
Column( dt, 6 ) << set name( "Y4" );
Column( dt, 7 ) << set name( "Y5" );
Column( dt, 8 ) << set name( "Y6" );
dt << delete columns( Index( 9, 129 ) );
// Determine the number of SIDs
Summarize( dt, SIDgrps = by( SID ) );
// Create the output window
nw = New Window( "Report", MainVLB = V List Box() );
// Create a list to hold the data table names
dtList = {};
// Setup what to do when the display window is closed
nw << on close( For( i = 1, i <= N Items( SIDgrps ), i++, Close( dtList[i], nosave ) ) );
// Loop through the SIDs and generate the required reports
For( i = 1, i <= N Items( SIDgrps ), i++,
dt << select where( :SID == Num( SIDgrps[i] ) );
dtSub = dt << subset( selected rows( 1 ), selected columns( 0 ), invisible );
Insert Into( dtList, dtSub );
dtSub << set name( "SID=" || SIDgrps[i] );
ob = Outline Box( "SID=" || SIDgrps[i],
H List Box(
dtSub = Bivariate( Y( :Y1 ), X( :X ) ),
dtSub = Bivariate( Y( :Y2 ), X( :X ) ),
dtSub = Bivariate( Y( :Y3 ), X( :X ) ),
dtSub = Bivariate( Y( :Y4 ), X( :X ) ),
dtSub = Bivariate( Y( :Y5 ), X( :X ) ),
dtSub = Bivariate( Y( :Y6 ), X( :X ) ),
)
);
// Add the current set of reports to the main display
MainVLB << append( ob );
);