Tabelliere alle numerischen Spalten in einer TabelleHallo,
Ich versuche, eine tabellarische Tabelle zu erstellen, die alle numerischen Spalten enthält (und dann eine weitere mit den kategorialen).
Ich habe versucht, dies auszuführen, aber es funktioniert nicht.
Irgendein Vorschlag?
TIA
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
NumericCols = {};
for(i = 1, i <= N Cols(dt), i++,
Col = Column(dt,i);
ColDataType = Col << Get Data Type;
If( ColDataType == "Numeric",
Insert Into(NumericCols,Col << Get Name);
);
);
Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean ) ),
Column Table( Statistics( Std Dev ) ),
Column Table( Statistics( Min ) ),
Column Table( Statistics( Max ) ),
Column Table( Statistics( Median ) ),
Row Table(
Analysis Columns(
NumericCols = {}
)
)
)
)Betreff: Alle numerischen Spalten in einer Tabelle tabellierenPS.
Ich habe diesen Code umgeschrieben, um an fortlaufenden Spalten statt an numerischen zu arbeiten. Dies entspricht meinen Anforderungen besser, da ich mehrere Spalten habe, die zwar nominal sind, aber numerische Daten und Wertbeschriftungen haben.
Hier ist der letzte Code, den ich verwendet habe.
Names Default To Here( 1 );
dt = currentdatatable();
continuousCols /*NumericCols */ = dt << get column names( continuous /*numeric*/ );
dt << Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean, Std Dev ) ),
Column Table( Statistics( Min, Max ) ),
Column Table( Statistics( Median ) ),
Row Table( Analysis Columns( Eval( continuousCols /*NumericCols */ ) ) )
)
);
Vielen Dank für deine Hilfe!
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenHier ist eine Methode, um zu tun, was Sie wollen
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( nominal );
// Build a string variable that contains the required JSL
theExpr =
"dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( \!"% of Total\!" ) ) ),";
For( i = 1, i <= N Items( CharacterCols ), i++,
theExpr = theExpr ||
"Row Table( Grouping Columns( " || char(CharacterCols[i]) || ") ),";
);
theExpr = theExpr || "));";
// Execute the JSL
eval(parse(theExpr));
Andere Community-Mitglieder haben möglicherweise eine bessere Methode
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenNochmals vielen Dank, dass Sie sich an mich gehalten haben. Der zweite von Ihnen gesendete Code liefert immer noch nicht die Ergebnisse, die ich benötige.
Bitte sehen Sie unten die Ergebnisse, die ich zu erhalten versuche, was das Ergebnis des Codes ist, den ich im vorherigen Beitrag gepostet habe, gefolgt von den Ergebnissen, die ich von Ihrem Code bekomme.
Das möchte ich bekommen:

Das bekomme ich mit dem geposteten Code:

TIA
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenDas Problem liegt nicht beim Tabulate-Code.Der Tabellencode, den ich Ihnen zur Verfügung gestellt habe, wird gut funktionieren.Das Problem liegt in der Einstellung der Spalten, die in der Tabelle enthalten sein sollen.Im letzten Code, den ich Ihnen geschickt habe, die Erklärung
CharacterCols = dt << get column names( character );
In die Liste CharacterCols wurden alle Spalten aus der Datentabelle eingefügt, die vom Datentyp Character waren.Und das Tabulate lief korrekt mit den Spalten Lot_id, Wafer ID in Lot ID.Dies sind die einzigen 2 Spalten in der Datentabelle, die vom Zeichendatentyp sind.Es war mein Missverständnis, dass Ihre Anfrage, Klassifizierungsvariablen in die zweite Tabelle aufzunehmen, bedeutete, Zeichenspalten.Aber mit Ihrer Korrektur, dass die Klassifizierung Wafer und Site in die Tabelle aufnehmen muss, erfordert dies, dass die CharacterCols-Spaltenliste anders generiert werden muss.Was alle gewünschten Spalten abdeckt, ist, diese Liste mit allen Spalten mit dem Modellierungstyp "Nominal" zu laden.Daher eine einfache Änderung der Aussage zu
CharacterCols = dt << get column names( nominal );
Wird in die CharacterCols-Liste aufgenommen, {lot_id, Wafer, Wafer-ID in Chargen-ID, SITE};
Die modifizierte JSL ist unten
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( nominal );
dt << Tabulate(
Set Format( Name( "% of Total" )(9, 0) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( eval( CharacterCols ) ) )
)
);
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenDanke für die Antwort, aber der von Ihnen gepostete Code liefert mir nicht die Tabelle, die ich brauche.
Hier ist der Code für das von Ihnen verwendete Datendateibeispiel, das mir die Tabelle geben würde, die ich brauche.
Sie werden feststellen, dass die Ausgabe anders ist.
Tabulate(
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( :lot_id ) ),
Row Table( Grouping Columns( :wafer ) ),
Row Table( Grouping Columns( :Wafer ID in lot ID ) ),
Row Table( Grouping Columns( :SITE ) )
)
);
Der Grund, warum ich davon ausgegangen bin, dass es einen Unterschied gibt, ist, dass hier jede Zeilentabelle separat angegeben wird, aber in den numerischen Daten waren sie alle gleich
"Zeilentabelle(Analysespalten("
und dann eine durch Komma getrennte Liste der Spaltennamen.
Dies führte mich zu der Überlegung, dass ich für die Zahlen eine einfache Liste verwenden könnte, aber nicht für die Zeichen.
Danke für den Hinweis auf die Scripting Guide Ich sollte definitiv die Zeit finden, es zu studieren!
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenDie Tabulate-Syntax lautet NICHT völlig anders, tatsächlich ist es identisch, außer dass die Wörter "Analysespalten" in "Gruppierungsspalten" geändert wurden.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( Character );
dt << Tabulate(
Set Format( Name( "% of Total" )(9, 0) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( eval( CharacterCols ) ) )
)
);
Ich würde gerne wissen, warum Sie dachten, die Syntax sei drastisch anders?Ich gehe davon aus, dass Sie interaktiv eine Beispieltabelle für die Analysespalten ausführen und sich dann von JMP die JSL für das von Ihnen ausgeführte Beispiel bereitstellen lassen und dasselbe dann für die Zeichenspalten wiederholen.Das hätte dir fast identisches JSL gezeigt.Ich möchte Ihnen helfen, herauszufinden, was Sie zu Ihrer Schlussfolgerung geführt hat, damit ich Ihnen helfen kann, das Erstellen von Skripten so einfach wie möglich zu gestalten.
Oh .... und Sie müssen den Scripting Guide lesen ... es gibt keinen Ersatz dafür, ihn zu lesen.
Hilfe==>JMP Documentation Library...……..Scripting Guide
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenHallo,
Vielen Dank!
Ich sehe jetzt, dass die Syntax einer kategorialen Spalte völlig anders ist.
Wie würden Sie dies tun, wenn Sie eine tabellarische Tabelle mit Folgendem wünschen:
Set Format( Name( "% of Total" )(9, 0) ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Betreff: Alle numerischen Spalten in einer Tabelle tabellierenHier ist eine Umschreibung Ihres Codes, die eine einfachere Methode verwendet, um die numerischen Spaltennamen abzurufen, und dann die Eval()-Funktion um die Liste der numerischen Spalten herum hinzufügt, damit es funktioniert
.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
NumericCols = dt << get column names( numeric );
dt << Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean, Std Dev ) ),
Column Table( Statistics( Min, Max ) ),
Column Table( Statistics( Median ) ),
Row Table( Analysis Columns( Eval( Numericcols ) ) )
)
);
Betreff: Alle numerischen Spalten einer Tabelle tabellierenAus Versehen habe ich die obige Frage bearbeitet und die Frage in meine Antwort geändert. @eliyahu100 Ich entschuldige mich für meinen Fehler.