SAS zu JSL – Schleifen ausführen ...Ich bin ein langjähriger SAS-Benutzer, der gezwungen ist, JSL zu lernen ...
Dinge, die ich in SAS einfach fand, scheinen in JSL so schwierig zu sein ...
Könnte mir jemand zeigen, wie Do-Loops in JSL funktionieren, indem er mir JSL-Code zur Verfügung stellt, der mit JSL die folgende verschachtelte Do-Loop-Tabelle generiert?
data frustration;
do temp = 1 to 10 by 1;
do press = 5 to 20 by 5;
do time = 1 to 1000 by 20;
output;
end;
end;
end;
run;
Es sollte ziemlich einfach sein, diese Art von Simulationen zu erstellen, aber ich komme damit nicht klar.
SkripterstellungBetreff: SAS zu JSL – Schleifen ausführen ...Jeff – es tut mir so leid, dass ich zu spät komme. Sie haben mit dieser Antwort alles gegeben, und ich danke Ihnen. Der Grund, warum ich nicht noch einmal nachgeschaut habe, ist, dass ich es so hinbekommen konnte, wie ich es wollte. Vielen Dank für die Erläuterung der Unterschiede zwischen JSL und SAS. Es war wirklich hilfreich
Betreff: SAS zu JSL – Schleifen ausführen ...Hallo @fat_angus , willkommen als JMP-Benutzer und in der JMP-Benutzergemeinschaft.
Als langjähriger SAS-Programmierer (ich selbst bin einer) müssen Sie über JMP und JSL ganz anders denken als über SAS.
Sie haben beispielsweise eine Frage zu einem SAS DATA-Schritt gepostet. Wie Sie wissen, dreht sich im DATA-Schritt alles um die Erstellung eines SAS-Datensatzes. Es gibt kein direktes Äquivalent für den DATA-Schritt in JSL, da es bei JSL hauptsächlich darum geht, die Dinge zu automatisieren, die Sie interaktiv in JMP tun würden.
Aus diesem Grund ermutige ich die Leute immer, sich zu vergewissern, dass sie eine gute Grundlage für die interaktive Verwendung von JMP haben, bevor sie darüber nachdenken, welche Aufgaben sie automatisieren möchten.
Um beispielsweise die Datentabelle zu erstellen, die Sie in Ihrem DATA-Schritt erstellen, würde ich eine Datei->Neue Tabelle... erstellen.
Dann Spalten->Neue Spalten... um eine neue Spalte hinzuzufügen und zu geben eine Formel Verwendung der Reihenfolge() Funktion.

Temp columnTemp columnTemp-Spalte
Das Gleiche würde ich auch für die anderen Spalten tun.
press columnpress columnPressespalte
time columntime columnZeitspalte
Nachdem Sie der Datentabelle Zeilen hinzugefügt haben, erhalten Sie Folgendes:

Wenn Sie fertig sind, können Sie zum roten Dreieck neben dem Namen der Datentabelle gehen und das Tabellenskript kopieren.

Dadurch erhalten Sie das folgende Skript zum Erstellen einer neuen Tabelle:
New Table( "untitled",
Add Rows( 2000 ),
New Column( "temp",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 1, 10, 1, 200 ) )
),
New Column( "press",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 20, 5, 50 ) )
),
New Column( "time",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 1, 1000, 20 ) ),
)
)
Es gibt natürlich auch andere interaktive Möglichkeiten, die Tabelle zu erhalten, die Sie in Ihrem DATA-Schritt beschrieben haben. Sie könnten drei Tabellen mit Ihren Sequenzen erstellen und diese dann verwenden Tabellen->Verbinden und ein paar Kartesische Verknüpfungen um den gleichen Tisch zu bekommen. Wenn Sie bereit sind, kann Ihnen JMP die Skripts für diese Schritte zur Verfügung stellen.
Unabhängig davon beginnt alles damit, dass Sie verstehen, wie man JMP und insbesondere Datentabellen interaktiv nutzt, bevor Sie über die Skripterstellung nachdenken. Schließlich wissen Sie erst dann, was für ein Skript erforderlich ist, wenn Sie bereits wissen, was JMP mit den integrierten Tools kann.
Lernen Sie weiter und stellen Sie hier in der Community weiterhin Fragen. Wir helfen Ihnen gerne weiter!
Betreff: SAS zu JSL – Schleifen ausführen ...Das ist großartig, Craige_HALES!
Ich schätze es sehr, dass Sie sich die Zeit genommen haben, es zu erklären.
Betreff: SAS zu JSL – Schleifen ausführen ...Nochmals vielen Dank an SUPER USER PMROZ; das ist hilfreich.
Betreff: SAS zu JSL – Schleifen ausführen ...Ein vollständiges Beispiel, das zeigt, wie schwer es ist, mit einer neuen Sprache anzufangen. (Der Hilfe->Skriptindex und die Online-Hilfe sind ergänzende Ressourcen. Meistens verwende ich den Hilfe->Skriptindex, um mich daran zu erinnern, wie es funktioniert. Die Online-Hilfe könnte für den Anfang besser sein.) Ich habe hier etwas mehr eingegeben, als gerade nötig war. Ich habe die SAS-Regeln für die Groß- und Kleinschreibung von Namen vergessen ...
Names Default To Here( 1 );
// what does that mean? JSL has several namespaces; the 'here' namespace is for this
// editor window and means 'press' is really 'here:press' but 'dtFrustration:press' belongs to
// the table's namespace (of column names.) You could also just use different names,
// like 'iPress' for the loop control variable. JMP's variable names are almost never
// case sensitive, the weird exception being column names, which are only sensitive <BR />// if both 'Age' and 'age' are columns...Don't do that!
// an easy way to get this table script is to make a new table with the
// JMP GUI, then use the top-left red triangle to 'Copy Table Script (No Data)'.
// By convention, JSL uses 'dt' in the variable name that holds a handle to a table.
dtFrustration = New Table( "frustration",
New Column( "temp" ), // continuous numeric by default
New Column( "press" ),
New Column( "time" )
);
// because the table might be linked to other reports, there
// is a lot of hidden messaging when the table changes. A lot.
// The messaging can be shut off and later enabled for a nice speedup.
// (to see it take longer, rerun just the loop below.)
// dtFrustration << BeginDataUpdate; // pair with EndDataUpdate, below
For( temp = 1, temp <= 10, temp++,
For( press = 5, press <= 20, press += 5,
For( time = 1, time <= 1000, time += 20,
dtFrustration << addrows( 1 );
dtFrustration:time = time;
dtFrustration:temp = temp;
dtFrustration:press = press;
)
)
);
// dtFrustration << EndDataUpdate;
Betreff: SAS zu JSL – Schleifen ausführen ...Ich finde es einfacher, anhand von Beispielen zu lernen. Schauen Sie sich also so viel Code an, wie Sie in diesem Forum finden können.Sobald Sie loslegen, wird Ihnen der Skriptindex wirklich zur Seite stehen.
Die JSL für Schleifen und Wenn Diese Aussage war zwar vom Konzept her einfach, war für mich jedoch anfangs etwas verwirrend.Um Ihre Lernkurve zu verkürzen Wenn Denken Sie daran, dass es sich um eine Funktion handelt und das Komma sie darstellt Dann , sonst wenn Und anders .Öffnen Sie ein Skriptfenster ( Strg-T ), klicken Sie mit der rechten Maustaste in das Fenster und wählen Sie Eingebettetes Protokoll anzeigen .Fügen Sie den folgenden Code ein und klicken Sie Strg-R um es auszuführen.Spielen Sie mit verschiedenen Werten für a, b und c herum, um zu sehen, was passiert.
a = 1;
b = 2;
c = 1;
if (a == b,
// then
print("a is equal to b");
,
// else if
a == c,
// then
print("a is equal to c");
,
// else
print("No match found for a");
);
Betreff: SAS zu JSL – Schleifen ausführen ...Vielen Dank... das ist hilfreich.
Betreff: SAS zu JSL – Schleifen ausführen ...Ich höre, was Sie sagen ... Danke ... aber es ist so, als würde Ihnen jemand sagen, Sie sollen die Bibel lesen, um das Christentum zu verstehen ... Ich habe ungefähr zwei Stunden in der Skriptanleitung verbracht und gesucht, wie man das scheinbar machen kann Einfaches Konzept ... außerdem hatte ich viel Erfolg beim Schreiben anderer Skripte ... aber ehrlich gesagt weckt der Skript-Leitfaden in mir Sehnsucht nach zusätzlichen 20.000 im Budget für eine SAS-Lizenz.
Ich bin kein Hardcore-Programmierer... Ich bin Ingenieur und versuche, Dinge schnell zu erledigen.
Betreff: SAS zu JSL – Schleifen ausführen ...Danke für die Hilfe, pmroz
Betreff: SAS zu JSL – Schleifen ausführen ...C++-Programmiererhandbuch für JSL könnte auch etwas helfen. Es versucht zu zeigen, dass die JSL-for-Anweisung tatsächlich eine Funktion ist, und wenn man das weiß, wird es viel einfacher, die Syntax richtig zu machen.
Betreff: SAS zu JSL – Schleifen ausführen ...All dies wird im Scripting Guide behandelt, dessen Lektüre ich Ihnen sehr, sehr empfehle.Es ist in der JMP-Dokumentationsbibliothek verfügbar und im Pulldown-Menü „Hilfe“ in JMP verfügbar.
Betreff: SAS zu JSL – Schleifen ausführen ...Wenn Sie Unterstützung beim Erlernen von JSL benötigen, sind Sie bei uns an der richtigen Adresse.Der Skriptindex ist Ihr Freund, ebenso wie die Online-Dokumentation.
Hier ist ein Codeausschnitt, der das tut, was Sie wollen:
dt = data table("frustration");
for (temp = 1, temp <= 10, temp++,
for (press = 5, press <= 20, press+=5,
for (time = 1, time <= 1000, time+=20,
show(temp, press, time); // output
);
);
);