Wie erstelle ich ein allgemeines/variables Skript zum Aufteilen einer Datentabelle und zum Durchführen von Berechnungen?Ich führe routinemäßig dieselben Datentabellenmanipulationen und Berechnungen durch und bin daran interessiert, dies mit einem Skript zu automatisieren.
Die allgemeinen Schritte sind etwa:

- Tabelle teilen (Spalte „Wert“ nach Spalte „Attribut“ teilen) > generiert eine neue Tabelle
- Erzeugen Sie eine neue Spalte (C) = Spalte A + Spalte B
- Neue Spalte (D) generieren = Spalte A / Spalte C

Allerdings hat jede Tabelle eine unterschiedliche Anzahl an Zeilen und unterschiedliche Werte.Wenn ich durch diese Funktionen klicke und das von JMP generierte Skript untersuche, sind die Anzahl der Zeilen und Werte in jeder Spalte fest codiert.Wie mache ich diese vollständig variabel, damit ich das Skript für neue Datentabellen beliebiger Größe ausführen kann?
Bisher habe ich ein Skript, das so aussieht, aber es fragt Sie nach der Anzahl der Zeilen und generiert dann einfach eine leere Tabelle.Es fällt mir schwer, Dokumentation zu finden, daher bin ich für jede Hilfe dankbar!
New Table( "split table",
Add Rows(),
New Script(
"Source",
Data Table() <<
Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property ) ),
New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Formula( :Name( "A" ) + :Name( "B" ) ) ),
New Column( "D", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( :Name( "A" ) / :Name( "C" ) ) ) )
Betreff: Wie erstelle ich ein allgemeines/variables Skript zum Aufteilen einer Datentabelle und zum Durchführen von Berechnungen?Hallo Jim,
Tut mir leid wegen der Datentabelle.Es scheint auf meinem Computer gut zu funktionieren, also habe ich es einfach erneut hochgeladen.
Ich habe Ihr Skript ausprobiert und es funktioniert bis auf eines: Das Erstellen der Spalten „Datum“, „A“ und „B“ ist überflüssig, da diese Spalten von der Funktion „Tabelle teilen“ in die neue Tabelle übernommen werden.So wird das Skript noch einfacher und funktioniert perfekt:
Names Default To Here( 1 );
// Create a pointer variable to be able to
// reference the current active data table
dt = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add new columns to the split data table
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);
Vielen Dank!
Betreff: Wie erstelle ich ein allgemeines/variables Skript zum Aufteilen einer Datentabelle und zum Durchführen von Berechnungen?1. Ihre angehängte Datentabelle ist beschädigt.Ich habe es mit einem Texteditor geöffnet und es werden Meldungen angezeigt, dass die Daten gelöscht wurden.
2. Anhand des Textes Ihrer Frage glaube ich zu verstehen, dass Ihre Skriptstruktur Ihrer Meinung nach das tun sollte, was Sie wollen, aber tatsächlich wird nur eine leere Datentabelle generiert ... wie Sie berichtet haben.
3. Hier ist, was Sie meiner Meinung nach als Ausgangspunkt für Ihr Skript wünschen
Names Default To Here( 1 );
// Create a pointer variable to be able to reference
// the current active data table
dt = Current Data Table();
// Creat the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add the new columns to the split data table
dt2 << New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) );
dt2 << New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);