Holen Sie sich die Anzahl der Gruppierungen (Panels) im Graph Builder, um zu überprüfen, ob die Visualisierung sinnvoll istAlso habe ich ein bisschen JSL geschrieben, das in der Lage ist, eine Datentabelle zu nehmen und Vorschläge für Diagramme zu machen. Es überprüft die Anzahl der eindeutigen Werte, den Spaltendatentyp und den Spaltennamen, um zu beurteilen, welches Diagramm am besten geeignet wäre.
Ein Problem, das ich habe, ist, wenn es Seite, Gruppe X, Gruppe Y und/oder Wrap verwendet und es nicht viele Datenpunkte in den resultierenden Panels gibt. Unten ist ein dummes Beispiel mit Big Class.Der Name ist eindeutig eine schlechte Gruppierungsvariable, da jedes Feld des Diagramms nur einen Punkt enthält.

Nachdem mein Code eine potenzielle Visualisierung ausgewählt hat, was wäre der beste Weg, um zu überprüfen, ob das Layout nicht hauptsächlich Panels enthält, die datensparsam/leer sind?
- Da ich weiß, wie meine Variablen zusammenhängen, kann ich mit tabulate eine Tabelle erstellen, eine versteckte Datentabelle erstellen, eine Matrix erstellen und dann die Sparsity der Matrix überprüfen. Das wirkt langatmig.
- Ich brauche eine Anzahl, die meiner Meinung nach mit der JSL-Funktion summarise () (in JMP 12) nicht möglich ist, die keine Tabelle erstellt.
- Gibt es eine elegante Möglichkeit, die Zählmatrix zu erstellen?
- Normalerweise schlägt der Code drei Diagramme für jedes Element in der zahlreichsten Liste (X, Y oder Legend) vor, daher möchte ich das Erstellen von Tabellen nach Möglichkeit vermeiden.
Vielen Dank,
Stefan
Betreff: Anzahl für Gruppierung (Panels) im Graph Builder abrufen, um zu überprüfen, ob die Visualisierung sinnvoll istEs stellt sich heraus, dass es ein JMP-Add-In gibt, das dies kann Konvertieren Sie alle Zeichenspalten in numerische . Danke an @M_Anderson für darauf hinweisen .
Dies macht die Verwendung von summarise() wirklich einfach.
Betreff: Anzahl für Gruppierung (Panels) im Graph Builder abrufen, um zu überprüfen, ob die Visualisierung sinnvoll istWenn alle Ihre Gruppierungsvariablen numerisch wären, wäre es schneller, weil die Zusammenfassung das Zählen schnell erledigen könnte. Aber das ist sehr restriktiv für die Daten und/oder den Benutzer. Sie könnten die Zusammenfassungsfunktionsaufrufe in "Zusammenfassungs" -Plattformen umwandeln und Tabellen erstellen, die sowohl numerische als auch Zeichenspalten verarbeiten können. Ob das funktioniert, könntest du mal testen.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\car physical data.jmp" );
dtsumm=dt << Summary(private,
Group( :type),
N( :type ),
Freq( "None" ),
Weight( "None" )
);
show(dtsumm:type<<GET values=""></GET>
Betreff: Anzahl für Gruppierung (Panels) im Graph Builder abrufen, um zu überprüfen, ob die Visualisierung sinnvoll istDanke für dieses Beispiel. Wenn ich eine Gruppe Y und eine Gruppe X (möglicherweise auch X) alle als Zeichen habe, muss ich dann drei for-Schleifen verschachteln? Dies wird schnell zu einer Möglichkeit, JMP in Schleifen zu binden, da die Datentabellen eine unbekannte Größe haben (Möglicherweise könnte ein Benutzer 30 Diagramme anfordern, für die alle die Panel-Matrix-Berechnung benötigen - ich habe das Programm so begrenzt, dass nur die ersten 30 Vorschläge angezeigt werden). .
Vielleicht ist dies ein besseres Beispiel für die Verwendung physischer Daten von Autos. Ich hatte auf eine 3x5-Matrix oder eine Liste mit 15 Elementen gehofft.

Kodiere ich die Zeichenspalten am besten als numerisch um, um summarise() optimal zu nutzen? Ist wahrscheinlich schneller/ordentlicher als für Schleifen?
Betreff: Anzahl für Gruppierung (Panels) im Graph Builder abrufen, um zu überprüfen, ob die Visualisierung sinnvoll istZusammenfassen ist der richtige Weg. Es kann keine Zählungen für Zeichenspalten durchführen, aber es kann die Gruppierungswerte erhalten, aus denen Sie die Zählungen erhalten können. Siehe das Skript unten
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Numeric Column
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, bygroup = by( :age ), counts = Count( :age ) );
Show( "Numeric Column", bygroup, counts );
// Character Column
Summarize( dt, bygroup = by( :sex ) );
counts = {};
For( i = 1, i <= N Items( bygroup ), i++,
Insert Into( counts, N Rows( dt << get rows where( :sex == bygroup[i] ) ) )
);
Show( "Character Column", bygroup, counts );