Tabellenfunktionen – Mehrere TabellenIch habe zwei Probleme damit, dass JMP wohl Tabellen zuweist und sie später verwendet. Die Schritte 2 und 3 werden in separaten Skripten ausgeführt, die mithilfe von aufgerufen werden Enthalten() Funktion.
// Schritt 1: Daten vom Server abrufen und dt_testdata_ss zuweisen
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );</QUERY></SERVER>
// Schritt 2: Erstellt eine neue Tabelle mit Bedingungen
dt_testdata_ss_tx = dt_testdata_ss
<< select where ( (:col_1 == 24) & (:col_2 == 1))
<< subset( output table name("dt_testdata_ss_tx"));
// Schritt 2a: verwendet dt_testdata_ss_tx in graphplot.jsl
// Schritt 2b: verwendet dt_testdata_ss_tx in distribution.jsl
// Schritt 3: Erstellt eine neue Tabelle mit Bedingungen
dt_testdata_ss_rx = dt_testdata_ss
<< select where ((:col_1 == 16) & (:col_2== 3 ))
<< subset( output table name( "dt_testdata_ss_rx"));
// Schritt 3a: verwendet dt_testdata_ss_rx in graphplot.jsl
// Schritt 3b: verwendet dt_testdata_ss_rx in distribution.jsl
Ich habe jetzt drei Tabellen gleichzeitig geöffnet und kann nicht die richtige Tabelle für das von Ihnen bereitgestellte Skript aufrufen. Ich bin sogar so weit gegangen
dt_testdata_ss
dt_testdata_ss_tx
dt_testdata_ss_rx
Wenn ich Ihr Skript ausführe, erhalte ich die folgende Fehlermeldung, wenn ich es mit Änderungen ausführe dt Zu dt_testdata_tx oder dt_testdata_rx :
FEHLER: Ungültiges Argument beim Zugriff oder bei der Auswertung von „Close“, Close *###*/(dtSum, nosave)
Ich kann nur davon ausgehen, dass dt nicht dt_testdata_tx oder dt_testdata_rx zugewiesen wird, da die Tabelle nicht ausgeführt wird. Ich kann nicht herausfinden, wie ich eine bestimmte Tabelle zum Bearbeiten aufrufen kann, wenn alle drei geöffnet sind. Vorschläge?
Dank im Voraus
dt = current data table(); // removed this line
dtsum = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
dtFinal = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
Automatisierung und SkripterstellungDatenzugriffBetreff: Tabellenfunktionen – Mehrere TabellenNamen sind standardmäßig hier(1) und alle Variablen sind lokal.Wenn alle Variablen global sein sollen, lassen Sie diese Zeile weg.
Andernfalls könnten Sie sie mithilfe globaler Variablen übergeben.Eine globale Variable in JSL beginnt mit zwei Doppelpunkten „::“.Ich füge g_ hinzu, um anzuzeigen, dass es sich um eine globale Variable handelt.
::g_dt_testdata_ss_tx = foo bar ...
Betreff: Tabellenfunktionen – Mehrere TabellenDas funktioniert super, danke.. Ich habe tatsächlich ein kleines Problem mit meinem Skript festgestellt, das es mir nicht erlaubte, Tabellen zu ändern.
Jetzt ist mein Problem, dass ich 4 offene Tabellen habe und diese einzeln in einem Include()-Skript verwendet werden. Ich kann nicht herausfinden, wie ich die Datentabelle im neuen Skript auswählen soll. Es scheint, dass die Variablen nicht an das neue Skript weitergeleitet werden.
Wenn ich 4 Tabellennamen habe, erfolgt dies Names To Default Here(1); Speichern Sie es einfach in den Datentabellenvariablen in dem Skript, das sie erstellt hat? Ich habe Names To Default Here(0) ausprobiert; was meiner Meinung nach global zugewiesen wurde ...
Irgendwelche Vorschläge?
Danke
Betreff: Tabellenfunktionen – Mehrere TabellenIch denke, es musste daran liegen, wie die Tabellen/Variablen zugewiesen wurden. Es sind die einfachen Dinge, die die meisten Probleme verursachen.
Eine Rechenaufgabe, die aufgrund eines einfachen Rechenfehlers falsch ist. Vielen Dank für die Erklärung..
Betreff: Tabellenfunktionen – Mehrere TabellenDu bist ziemlich nah dran.Für den Befehl „subset“ ist es nicht erforderlich, der Tabelle einen Namen zu geben.Es reicht aus, es einfach einer Variablen zuzuweisen.Sie sollten jedoch angeben, wie mit der Teilmenge gearbeitet werden soll ausgewählte Zeilen (1), ausgewählte Spalten (0) .
Nicht sicher warum close(dtsum, nosave) funktioniert nicht, sofern Sie dtsum = (eine der Tabellenvariablen) zugewiesen haben.
Hinsichtlich dt = aktuelle Datentabelle() - Ich würde dies nicht verwenden, da Sie drei Tabellen geöffnet haben und möglicherweise nicht klar ist, welche Tabelle aktuell ist.Verwenden Sie besser einfach Ihre vorhandenen Tabellenvariablen.
// Step 1: Pull in data from server and assign it to dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );
// Step 2: creates new table with conditions
dt_testdata_ss_tx = dt_testdata_ss << select where ( (:col_1 == 24) & (:col_2 == 1 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 2a: uses dt_testdata_ss_tx in graphplot.jsl
// Step 2b: uses dt_testdata_ss_tx in distribution.jsl
// Step 3: creates new table with conditions
dt_testdata_ss << clear row states; // Remove prior selec
dt_testdata_ss_rx = dt_testdata_ss << select where ( (:col_1 == 16) & (:col_2 == 3 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 3a: uses dt_testdata_ss_rx in graphplot.jsl
// Step 3b: uses dt_testdata_ss_rx in distribution.jsl</QUERY></SERVER>
Betreff: Tabellenfunktionen – Mehrere TabellenWenn ich Ihr Problem richtig interpretiere, glaube ich, dass Sie nicht ganz verstehen, wie die Variablen funktionieren, die auf die Datentabellen verweisen, und wie Sie sie verwenden.Ich habe ein sehr einfaches Skript zusammengestellt, das drei verschiedene Datentabellen erstellt.Anschließend wird eine Analyse für jede der verschiedenen Datentabellen erstellt, und zwar in einer Reihenfolge, die sich von der Reihenfolge unterscheidet, in der sie erstellt wurden.Um dies zu erreichen, habe ich die Zeigervariablen der Datentabelle verwendet.Anschließend habe ich auch einen Kommentarabschnitt eingefügt, der veranschaulicht, wie dieselbe Ausgabereihenfolge erreicht wird, wenn Sie die aktuelle Datentabelle zurücksetzen, bevor Sie die Analyse ausführen.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << select where( :sex == "F" );
dtFemale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtMale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dtFemale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dtMale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
// Or
/*current data table( dtFemale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dtMale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dt );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);*/