JSL でサブセットの列名を指定する場合に推奨される形式は何ですか?JSL でサブセット テーブルを作成する場合、次のように、名前の前にコロン文字を付けて列名を指定するのが最も簡単です。 :身長。 ただし、その名前にダッシュ ( 「-」 ) 文字が含まれている場合、それは機能しません。 ただし、名前の前後に引用符を追加すると機能することがわかりました。 以下の完全なスクリプトは両方の方法を示しています (ただし、ビッグクラス.jmpダッシュを含む列名は含まれません)。
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 );
そして、必要に応じて、このスクリプトは次の名前で JMP テーブルに追加されます。列名テストスクリプト。 そして、JMP テーブル内からそのスクリプトを実行すると (緑の矢印を選択することで)、サブセット テーブルが適切に再生成されます。 ここまでは順調ですね。
しかし、そのスクリプトの編集を開始しようとすると (スクリプト名をダブルクリックしてエディターを開くことで)、面白いことが起こります。 この場合、スクリプト エディター内からスクリプトをそのまま実行すると、引用符で囲まれた列名をサブセット テーブルに追加できません。

スクリプトを見ると、二重引用符によって列名が null として扱われるようです。列として仕様。 (スクリプトが緑色の矢印からは正常に実行されるのに、スクリプト エディター内からは正常に実行されないのは非常に奇妙です。おそらく内部的には一方向に保存されているのに、エディターには別の方法でレンダリングされるのではないでしょうか??)
いずれにせよ、私の質問は次のとおりです。一般に、名前に特殊文字 (ダッシュなど) が含まれないようにサブセット列名を指定し、それでもスクリプト エディターを使用してスクリプトを開発およびデバッグできる推奨方法はありますか? (実際に生成しているのは、新しいスクリプトプログラムでコードを作成するため、名前に特殊文字が含まれるかどうかは事前にわかりません。) Mac OS 上で JMP 14.3.0 を実行しています。
Re: JSL でサブセットの列名を指定する場合に推奨される形式は何ですか?はい、それでうまくいくようです。 本当にありがとう、ジム!
完全を期すために、結果は次のとおりです。
まず、スクリプトを保存するスクリプトビッグクラス.jmpデータ表:
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 );そして、新しく作成したスクリプトを開きますビッグクラス.jmp :

また、以前とは異なり、このウィンドウからこのスクリプトを実行すると、期待どおりに実行されます。
Re: JSL でサブセットの列名を指定する場合に推奨される形式は何ですか?特殊文字が含まれる列名を参照する適切な方法は、: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]);