JMP vs. SAS<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich bin ein langjähriger SAS-Benutzer, der Makrovariablen verwendet, um als Platzhalter für Zeichenfolgen zu fungieren, die wiederholt in einem Programm verwendet werden, z. B. Pfad, Dateiname, Arrayspalten usw.
Hat JSL eine ähnliche Funktionalität?
Ein paar Beispiele wären sehr dankbar.
Re: JMP vs. SASEbenfalls. Beachten Sie, dass Sie Codeblöcke in Ausdrücke einfügen können (die in externen Dateien abgelegt und bei Bedarf 'eingeschlossen' werden können). Dann können Sie 'Substitute ()' verwenden:
Namensvorgabe bis hier ( 1 ) ;
codeBlock = Ausdruck ( Drucken ( "Makrovariable ist" || Verkohlen ( ein% ))) ;
Eval ( Ersatz ( NameExpr ( codeBlock ) . Ausdruck ( ein% ) . 10 )) ;
Eval ( Ersatz ( NameExpr ( codeBlock ) . Ausdruck ( ein% ) . 20 )) ;
Re: JMP vs. SASHier ist ein einfacheres Beispiel, das die Idee eines Platzhalters für Zeichenfolgen direkter anspricht. Also keine direkte Entsprechung zu SAS-Makrovariablen, aber Sie können dasselbe tun, wenn JSL-Variablen Ihre eigene Verkettung mit "||" durchführen. Verkettungsoperator ("+" wird nicht zum Verketten von Zeichenfolgen in JMP verwendet):
path = "c: \ users \ public \ temp \";
dt1 = Open (Pfad || "bc_mcv.jmp");
dt2 = Open (Pfad || "airport_by_state.jmp");
Hoffe das hilft.
Eric
Re: JMP vs. SASDanke, Ian. Das zeigte mir die richtige Richtung.
Ich verwende JMP und SAS in komplementärer Weise.
Re: JMP vs. SASDie SAS-Sprache und die JSL unterscheiden sich in Syntax, Struktur und Absicht sehr stark (was den sehr unterschiedlichen Charakter von SAS-System und JMP widerspiegelt).
Die nächstliegende Parallele wäre wahrscheinlich die Möglichkeit, Funktionen in JSL zu definieren, wobei die übergebenen Argumente den Werten von Makrovariablen entsprechen. Ein Beispiel könnte sein:
NamesDefaultToHere ( 1 ) ;
// Gegeben eine Tabelle und eine Spalte darin, erstellt eine Verteilung und gibt eine Referenz zurück
// das resultierende Objekt
doDistribution =
Funktion ({ inTable . inCol } . { Default Local } .
dieseVerteilung = inTable << Verteilung ( Säule ( inCol ))
) ;
// Eine Tabelle öffnen
dt = Öffnen ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// Erstellen Sie eine Verteilung und schließen Sie sie
myDistribution = doDistribution ( dt . Säule ( dt . "Höhe" )) ;
Warten ( 3 ) ;
Bericht ( myDistribution ) << Fenster schließen ;
Warten ( 3 ) ;
// Mach zwei Distributionen und schließe sie in umgekehrter Reihenfolge
dist1 = doDistribution ( dt . Säule ( dt . "Gewicht" )) ;
Warten ( 3 ) ;
dist2 = doDistribution ( dt . Säule ( dt . "Höhe" )) ;
Warten ( 3 ) ;
Bericht ( dist2 ) << Fenster schließen ;
Warten ( 3 ) ;
Bericht ( dist1 ) << Fenster schließen ;
Angesichts des Titels des Threads fühle ich mich verpflichtet zu erwähnen, dass es keinen Sinn gibt, in dem SAS und JMP sich widersprechen. In der Tat arbeiten JMP und SAS sehr gut zusammen, wenn der Anwendungsfall dies erfordert.