Hallo alle zusammen!
Zum Beispiel dieser Code, das Lesen der Daten in „copydt“ und wie man JSL verwendet, um „KATIE“ in „copydt“ in einem Schritt zu lesen, ich habe zwei Schritte im Code verwendet.
dt = Open("$SAMPLE_DATA\Big class.jmp");Wait(0);
copydt = dt[0,0];
dt[0,0] = .;
a=copydt[1,1];
b=a[1,1];
c={copydt[1,1][1,1]};
dt[0,0] = copydt;Wait(0);
Wie kann man außerdem die Daten in "copydt" direkt mit JSL ändern?
Ändern Sie beispielsweise den Namen der ersten Zeile in „KATIE2“ und das Alter der ersten Zeile in 18.
Schreibt die geänderten Daten in die ursprüngliche Datentabelle.
Danke!

Um die im Gegenstand dieser Diskussion aufgeworfene Frage zu beantworten, verwenden Sie Indizes für die Variable, die die aus der Datentabelle gebildeten Daten enthält. Sie können den Debugger oder das Protokoll verwenden, um die Ergebnisse zu untersuchen, während Sie Ihr Beispiel durcharbeiten. Ich werde das Protokoll verwenden.
dt = Open("$SAMPLE_DATA\Big class.jmp");
copydt = dt[0,0];
Die in dt[0,0] verwendete Subskription referenziert alle Zeilen und alle Spalten – die gesamte Tabelle. Die Variable copydt enthält eine Liste von Listen. Jede Unterliste ist eine Zeile in der ursprünglichen Datentabelle.
dt[0,0] = .;
Die Zuordnung von Missing erfolgt für alle Zeilen und alle Spalten – die gesamte Tabelle. Die Datentabelle enthält jetzt 40 Zeilen mit fehlenden Werten für 5 Datenspalten.
a = copydt[1,1];
Dieser Ausdruck verwendet standardmäßige Listenindizes. Sie rufen das erste Element in der Liste ab. Der Wert ist eine Liste, die die erste Zeile in der ursprünglichen Datentabelle darstellt. Wenn Sie lernen, wie man Listen indiziert, dann wissen Sie, dass dieser Ausdruck zweimal nach demselben fragt – dem ersten Element. Alle folgenden Ausdrücke sind identisch.
a = copydt[1];
a = copydt[1,1];
a = copydt[1,1,1];
Die erste Form ist also prägnanter und bevorzugt.
b = a[1,1];
Dasselbe wie der vorherige Ausdruck.Sie rufen das erste Element in der Liste ab. Der Wert ist eine Zeichenfolge aus der ersten Spalte in der ersten Zeile in der ursprünglichen Datentabelle.
c = { copydt[1,1][1,1] }; // c = { copydt[1][1] } is equivalent, sufficient, and preferred
Sie haben einer Variablen eine einelementige Liste zugewiesen. Es erfolgte keine Auswertung des Listenelements.
dt[0,0] = copydt;
Sie haben die Liste der Listen der gesamten Datentabelle zugewiesen. Jede Unterliste wird zu einer neuen Zeile in der Datentabelle. Dieser Schritt demonstriert das symmetrische Verhalten zwischen der zweiten Zeile und der letzten Zeile.
Um die im Hauptteil der Diskussion aufgeworfenen Fragen zu beantworten, verwenden Sie Indizes:
copydt[1][1] = "Katie2";
copydt[1][2] = 18;
Die Indizes sind verschachtelt. Also lesen copydt[1][1] = "Katie2" Weisen Sie dem ersten Element innerhalb des ersten Elements "Katie2" zu. Lesen copydt[1][2] = 18 als weisen Sie 18 dem zweiten Element innerhalb des ersten Elements zu.
Beachten Sie, dass sich die Fähigkeit zum Mischen von Daten zwischen Datentabellen, Matrizen und Listendatenstrukturen mit jeder Version von JMP ändert. Generell nehmen die Fähigkeiten zu und die Unterschiede zwischen den Strukturen ab.
Also, ich habe erklärt, was Sie getan haben, aber ich habe keine Ahnung, warum Sie es getan haben oder was Sie erreichen wollen. Ihr Thema ist sehr breit und vage. Was möchten Sie tun?
Wählen Hilfe > Bücher > Skriptleitfaden in JMP für ausführlichere Informationen und Erläuterungen zu Datentabellen, Listen und Matrizen.