Welches ist das empfohlene Format zum Angeben von Spaltennamen für eine Teilmenge in JSL?Beim Erstellen einer Teilmengentabelle in JSL können Spaltennamen am einfachsten mit einem Doppelpunkt vor dem Namen angegeben werden, wie in :Höhe . Wenn dieser Name jedoch einen Bindestrich enthält ( '-' ) Zeichen drin, das funktioniert nicht. Aber ich finde, dass es funktioniert, wenn man den Namen in Anführungszeichen setzt. Das vollständige Skript unten demonstriert beide Methoden (allerdings). Große Klasse.jmp enthält keine Spaltennamen mit Bindestrichen).
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
scrName = "Col name test script";
dt << New Script( // (use of 'New Script' gets script written to data table.)
scrName,
//---- create subset with StartTime and given FOMs ----
dt = Current Data Table();
dt_subset = dt << Subset(
Output Table( "Subset of Big Class" ),
All Rows,
Columns(
:name, // not in quotes.
:"height", // in quotes -- required if col name contains '-'.
:"weight" // in quotes -- required if col name contains '-'.
);
);
);
// run script to generate graph.
dt << Run Script( scrName );
Und wie gewünscht wird dieses Skript mit dem Namen zur JMP-Tabelle hinzugefügt Col-Name-Testskript . Und wenn Sie dieses Skript aus der JMP-Tabelle heraus ausführen (durch Auswahl des grünen Pfeils), wird die Teilmengentabelle ordnungsgemäß neu generiert. So weit, ist es gut.
Aber es passieren seltsame Dinge, wenn Sie hineingehen und mit der Bearbeitung dieses Skripts beginnen möchten (indem Sie auf den Skriptnamen doppelklicken und den Editor öffnen). In diesem Fall können die in Anführungszeichen gesetzten Spaltennamen nicht zur Teilmengentabelle hinzugefügt werden, wenn das Skript so wie es ist im Skripteditor ausgeführt wird.

Wenn man sich das Skript ansieht, scheint es, dass doppelte Anführungszeichen dazu führen, dass Spaltennamen als Null behandelt werden Als Spalte Spezifikationen. (Es ist sehr seltsam, dass das Skript vom grünen Pfeil aus einwandfrei läuft, aber nicht vom Skripteditor aus; vielleicht ist es intern auf eine Art gespeichert, wird aber anders an den Editor ausgegeben??)
Meine Frage ist jedenfalls: Gibt es eine empfohlene Möglichkeit, Teilspaltennamen allgemein anzugeben, um vor Sonderzeichen (z. B. Bindestrichen) in den Namen zu schützen, aber trotzdem den Skripteditor zum Entwickeln und Debuggen eines Skripts verwenden zu können? (Ich erzeuge tatsächlich das Neues Skript Code programmgesteuert, daher weiß ich nicht im Voraus, ob Sonderzeichen in den Namen vorhanden sind.) Ich verwende JMP 14.3.0 unter Mac OS.
Betreff: Welches ist das empfohlene Format zur Angabe von Spaltennamen für eine Teilmenge in JSL?Ja, das scheint zu funktionieren. Vielen Dank, Jim!
Der Vollständigkeit halber hier, wie es ausgegangen ist.
Zuerst das Skript, das ein Skript im speichert Große Klasse.jmp Datentabelle:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("Height / Weight", Formula(:height / :weight));
dt << New Column("Height-Weight", Formula(:height / :weight)); // using '-'.
scrName = "Col name test script";
dt << New Script( // (use of 'New Script' gets script written to data table.)
scrName,
// create subset.
dt = Current Data Table();
dt_subset = dt << Subset(
Output Table( "Subset of Big Class" ),
All Rows,
Columns(
:name,
:Name("height"),
:Name("weight"),
:Name("Height / Weight"),
:Name("Height-Weight")
);
);
);
// run script to create subset.
dt << Run Script( scrName );Und dann das neu erstellte Skript öffnen Große Klasse.jmp :

Und wenn ich dieses Skript in diesem Fenster ausführe, läuft es anders als zuvor wie erwartet.
Betreff: Welches ist das empfohlene Format zur Angabe von Spaltennamen für eine Teilmenge in JSL?Der richtige Weg, auf Spaltennamen zu verweisen, die Sonderzeichen enthalten, ist die Funktion :Name()
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt << new column("Height / Weight", formula(:height / :weight));
colList = dt << get column names();
show( colList );
/*
colList = {name, age, sex, height, weight, Name("Height / Weight")};
*/
dt << Distribution( Continuous Distribution( Column( colList[6] ) ) );
show(:Name("height / weight")[1]);