次の例では、「名前」列が「表示する」、「除外しない」、「ラベルあり」、「スクロールロック」の状態になります。
Column( "名前" ) << Hide( 0 );
Column( "名前" ) << Exclude( 0 );
Column( "名前" ) << Label( 1 );
Column( "名前" ) << Set Scroll Locked( 1 );
メモ: 各種の引数を設定するメッセージ(Set Name、Set Values、Set Formulaなど)はすべてSetで始まりますが、 Setという語はSet Name 以外のメッセージでは省略可能です(Nameはすでに名前に特殊な文字を使うときのコマンドとして使われています)。好きな方の形式、または覚えやすい方の形式を使ってください。引数の現在の設定値を取得するメッセージ(Get Formulaなど)は、SetではなくGetで始まり、Getは省略できません。
列の選択を解除するには、データテーブルオブジェクトにClear Column Selectionメッセージを送ります。
dt << Clear Column Selection;
Set Nameを使って、列に名前をつけたり列の名前を変更したりできます。Get Nameは列の名前を戻します。次の例は、第2列(「年齢」)を「比率」に変更します。その後、現在の列名をログに戻します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = Column( 2 );
col << Set Name( "比率" );
col << Get Name;
同様に、Set Valuesは列に値を設定します。変数が文字タイプの場合、引数はリストである必要があります。数値タイプの場合は行列(ベクトル)です。値の数がデータテーブルの現在の行数より多い場合は、必要な行が追加されます。Get Valuesは、値をリストまたは行列の形で戻します。Get As MatrixはGet Valuesに似ていますが、数値列の値を戻します。
col << Set Values( myMatrix ); // 数値変数の場合
col << Set Values( myList ); // 文字変数の場合
col << Get Values; // 行列を戻す。文字の場合はリストを戻します
col << Get Matrix(<列名のリスト>|<列番号のリスト>|<列範囲>; // 指定の列を行列として戻す
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Column( "名前" ) << Values( {Fred, Wilma, Fred, Ethel, Fred, Lamont} );
myList = :名前 << Get Values;
Column( "年齢" ) << Values( [28, 27, 51, 48, 60, 30] );
myVector = :年齢 << Get Values;
myMatrix = :Name("体重(ポンド)") << Get as Matrix;
メモ: 値ラベルの詳細については、『JMPの使用法』の「列情報ウィンドウ」章を参照してください。
値ラベルは、次の3つの方法のどれかで指定できます。「Big Class.jmp」サンプルデータテーブルでは、Mが男性、Fが女性を表しています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:性別 << Value Labels( {"F", "M"}, {"女性", "男性"} ); // 2つのリストを使う
:性別 << Value Labels( {"F", "女性", "M", "男性"} ); // ペアのリストを使う
:性別 << Value Labels( {"F" = "女性", "M" = "男性"} ); // 割り当てのリストを使う
値のラベルを有効にするには、列にUse Value Labelsメッセージを送ります。
:性別 << Use Value Labels( 1 );
:性別 << Use Value Labels( 0 );
dt << Use Value Labels( 1 );
JSLを使って列のデータタイプを設定または取得することができます。設定できるタイプは、Character(文字)、Numeric(数値)、Row State(行の属性)です。次の例は、「Big Class.jmp」サンプルデータテーブルに文字タイプのデータを入れる新しい列を追加します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "新規" );
Column( "新規" ) << Data Type( Character );
Column( "新規" ) << Get Data Type;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = New Column( "新規" );
col << Modeling Type( "Continuous" );
col << Get Modeling Type;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = New Column( "日付" );
Column( "日付" ) << Data Type( Numeric, Format( "ddMonYYYY" ) );
Formatメッセージは、数値と日付/時間の形式を制御します。最初の引数は、列情報ウィンドウにある表示形式の選択肢を引用符で囲んだ文字列です。後続の引数は、表示形式によって異なります。フィールド幅も個別に設定できます。
col << Format( "Best", 5 ); // 幅が5
col << Format( "Fixed Dec", 9, 3 ); // 幅が9、小数点以下の桁数が3
col << Format( "PValue", 6 );
col << Format( "d/m/y", 10 );
col << Set Field Width( 30 );
日付の形式では、Formatメッセージにより日付をデータテーブルにどのように表示するかを指定します。データの入力形式や、入力または編集に備えて現在のセルを選択したときの表示形式を設定するには、Input Formatメッセージを使用します。
col << Format( "d/m/y", 10 ); // 日付を日-月-年の順序で表示する
col << Input Format( "m/d/y" ); // 日付を月-日-年の順序で入力する
メモ: Formatメッセージと、指定された形式に従って数値を文字列に変換するFormat関数を混同しないでください(「データタイプ」章の「日付時間の関数と形式」(130ページ)で説明しているように、通常、Format関数は日付/時間の表記に使われます)。オブジェクトにメッセージを送った場合は、同じ名前の関数を使った場合と結果がまったく異なります。
|
列の現在の形式を取得するには、次のようにGet Formatメッセージを実行します。
col << Get Format;
Format(
7, "Custom",
Formula(
Substr( "00", 1, 2 - Length( Char( value ) ) ) || Char( value )
),
12
);
Substr( "00", 1, 2)は文字列を指定し、最初の桁でカウントを始めて、2番目の桁でカウントをやめます。
- Length( Char( value ) ) )で文字列の長さを引きます。|| Char( value )で文字列を連結します。
Format( "Precision", 12, 3 ); // 幅12ピクセルの3桁の有効数字
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = New Column( "比率" ); // 列を作成し、その参照を格納する
col << Set Formula( :Name("身長(インチ)")/:Name("体重(ポンド)") );
// 計算式を設定する
col << Eval Formula; // 計算式を評価する
col << Get Formula; // 式 :height / :weightを戻す
•
|
1つの列を評価するときには、列にEval Formulaコマンドを送ることができます。これは、列を作成するコマンド内の計算式の節の直後で実行できます。
|
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "比率",
Numeric,
Formula( :Name("身長(インチ)") / :Name("体重(ポンド)") ),
Eval Formula
);
ただし、計算式を追加する作業がすべて終わってから、次のようにRun Formulasコマンドを使って、正しい順序ですべての計算式を実行させるようにしてください。
dt << Run Formulas;
•
|
Eval Formulaは計算式の評価をしますが、バックグラウンドでの再計算を行うため、Run Formulasコマンドの方がEval Formulaより適しています。システムのバックグラウンドで行われる計算タスクは、計算式が正しい順序で評価されるよう、十分な注意を払う必要があります。Run Formulasは、すべての計算処理が終了するまで、他のタスクを呼び出しません。
|
•
|
•
|
•
|
Add Custom Function()関数で、関数を作り、計算式エディタの関数リストに表示することができます。詳細は、第 “カスタム関数の作成、変換、フォーマット”の節を参照してください。
|
JSLを使って、リストチェックおよび範囲チェックのプロパティを操作できます。次の例は、「Big Class.jmp」サンプルデータテーブルを使用します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Column( "性別" ) << List Check( {"M", "F"} ); // プロパティを設定
Column( "性別" ) << List Check(); // プロパティをクリア
Column( "年齢" ) << Range Check( LTLT( 0, 120 ) );
どの関数の前にもNotを置くことができます。また、上側または下側だけの範囲も指定できます。次の例は、「年齢」列の値が12以上でなければならないことを指定します。
Column( "年齢" ) << Range Check( not( LT( 12 ) ) );
範囲チェックの属性をクリアするには、次のように空のRange Check()を実行します。
Column( "年齢" ) << Range Check();
Column( "性別" ) << Get List Check;
Column( "年齢" ) << Get Range Check;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Column( "年齢" ) << Range Check( LTLT( 0, 120 ) );
Column( "年齢" ) << Get Range Check;
Set Property、Get Property、およびDelete Propertyを使って、リストチェックと範囲チェックを設定、取得、削除することもできます。詳細については、第 “列プロパティ”を参照してください。
Get Scriptは、列を作成するためのスクリプトを戻します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "比率", Set Formula( :Name("身長(インチ)")/ :Name("体重(ポンド)")) );
Column( "比率" ) << Get Script;
列の役割をあらかじめ選択するには、Preselect Roleメッセージを使用します。選択できる役割は、No Role、X、Y、Weight、およびFreqです。Get Roleメッセージは、現在の設定を戻します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = New Column( "新規" );
col << Preselect Role( X );
col << Get Role;
col << Lock( 1 ); // ロック
col << Set Lock( 0 ); // ロック解除
col << Get Lock; // 現在の状態を表示