Verketten Sie alle Datentabellen mithilfe von JSLHallo, ich möchte alle offenen Datentabellen verketten. Allerdings kann die Anzahl der Datentabellen variieren und ich möchte, dass sich das Skript an eine unterschiedliche Anzahl von Tabellen anpassen kann.
Dies ist der Code für das, was ich tun möchte, ich möchte ihn jedoch verallgemeinern:
Datentabelle( N Tabelle() ) << Verketten(
Datentabelle( (N Table()-1) ),
Datentabelle( (N Table()-2) ),
Datentabelle( (N Table()-3) ),
Datentabelle( (N Table()-4) ),
Datentabelle( (N Table()-5) ),
Ausgabetabelle( „Alle Temps“),
Quellspalte erstellen
);
Dies ist der Code, den ich ausprobiert habe. Es tritt ein Fehler auf, bei dem der Name der Ausgabetabelle nicht aufgelöst wird (in diesem Fall ist „noTemps“ 6).
Datentabelle( N Tabelle() ) << Verketten(
For( i = 1, i < (noTemps), i++,
Datentabelle( (N Table()-i) ),
);
Ausgabetabelle( „Alle Temps“),
Quellspalte erstellen
);
Automatisierung und SkripterstellungDatenzugriffDatenmischung und -bereinigungBetreff: Alle Datentabellen mit JSL verkettenWelche JMP-Version verwenden Sie?
Betreff: Alle Datentabellen mit JSL verkettenBei JMP16+ würde ich „for every“ verwenden und die Liste der Tabellen durchlaufen
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = dt1 << Subset(All Rows, Selected Columns(0), Output Table("DEMO"));
dts = Get Data Table List();
dt_first = Remove From(dts, 1); // remove first table as we concatenate to that
For Each({dt}, dts,
dt_first << Concatenate(
dt,
"Append to first table",
"Create source column"
);
// Close(dt, no save);
);Betreff: Alle Datentabellen mit JSL verkettenVielen Dank für Ihre Antwort, aber es fällt mir schwer, dies auf meine Situation anzuwenden (obwohl ich denke, dass es relativ einfach sein sollte).
Was ist dt? Ich erhalte die Fehlermeldung „Name ungelöst“.
Ich habe dt1 auch nicht zugewiesen, da alle Tabellen bereits aus dem vorherigen Teil des Skripts geöffnet sind. Wie kann ich es zuweisen, ohne direkt eine bestimmte Tabelle aufzurufen?
Wenn ich dt1 wie unten zuweise, wird eine Demo-Tabelle erstellt, die Tabelle ist jedoch voll mit dem Wort Demo.
dt1 = Open( "$DOCUMENTS/Plot_Conduction_Losses/Module 6/DUT2/100C.jmp" );
Tut mir leid, wenn das schlecht erklärt und wortreich ist.
Betreff: Alle Datentabellen mit JSL verkettendt1 und dt2 dienen nur zu Demonstrationszwecken. Die Referenzen auf alle geöffneten Tabellen erhalten Sie mit Get Data Table List(). Welche JMP-Version verwenden Sie (für jede ist JMP16+ erforderlich, kann aber durch For ersetzt werden)? dt ist ein Verweis auf eine Datentabelle, die in der Liste der Datentabellenreferenzen gefunden werden kann dts.
Betreff: Alle Datentabellen mit JSL verkettenIch habe JMP 17.
Ich verstehe jetzt den dt-Teil, entschuldige die Verwirrung.
dts = Datentabellenliste abrufen();
dt_first = Remove From(dts, 1); // Erste Tabelle entfernen, während wir damit verketten
Für Each({dt}, dts,
dt_first << Verketten(
dt,
//An erste Tabelle anhängen,
„Quellenspalte erstellen“,
Ausgabetabelle( „Alle Temps“),
);
//Schließen(dt, kein Speichern);
);
Das ist nicht ganz das, was ich will. Es werden 6 neue Datentabellen erstellt, die alle mit dt_first verkettet sind.Ich möchte, dass es eine neue Datentabelle ist. Wenn ich den Kommentar entferne, hänge ich ihn an die erste Tabellenzeile an. Es entstehen 6 Quellspalten, nach denen ich in der weiteren Analyse nicht sortieren kann.
Betreff: Alle Datentabellen mit JSL verkettenIch habe mich nicht daran erinnert, dass Sie eine Liste mit Verkettung verwenden können
Names Default To Here(1);
Open("$SAMPLE_DATA/Students.jmp");
Open("$SAMPLE_DATA/Students1.jmp");
Open("$SAMPLE_DATA/Students2.jmp");
dts = Get Data Table List();
dt_first = Remove From(dts, 1)[1]; // remove first table as we concatenate to that
dt_result = dt_first << Concatenate(dts, "Create source column");
Außerdem muss/sollte der erste Index von Remove From() abgerufen werden, da Remove From() eine Liste zurückgibt.