公開日: 11/25/2021

条件付き関数

計算式に、条件式の関数を含めることができます(これらの関数は、計算式エディタでは、「条件付き」のグループに分類されています)。条件式の関数では、条件節と結果を指定します。これらの関数を用いると、列の各セルに、条件によって、異なる計算結果を割り当てることができます。条件式の関数には次のルールがあります。

どの節も真ではない場合、計算式エディタはelse節の結果式を評価して戻します。

条件式の結果式はすべて、評価された結果が同じデータタイプになる必要があります。

ただし、評価された結果が欠測値であった場合、その欠測値は該当の列のデータタイプになります。

JMPでは、条件節でのゼロは偽を意味します。

条件節が欠測値である場合、どの節も実行されず、欠測値が戻されます。ゼロでなく、また、欠測値でもないすべての数値は真を意味します。

構文の詳細については、『スクリプトガイド』の条件付き関数および『スクリプト構文リファレンス』の条件付き関数と論理関数を参照してください。

条件式に項目を追加したり削除したりするには、計算式エディタパネルの挿入ボタンおよび削除ボタンを使います。処理時間を短くするには、最も頻繁に評価される節と結果のペアを、一番最初に指定します。

メモ: InterpolateStepFor、およびWhileといった関数は、もっぱらJMPスクリプト言語(JSL; JMP Scripting Language)でプログラミングするときに用います。計算式エディタでもこれらの関数を使えますが、依存性と曖昧性が生じるためお薦めしません。通常、JSLプログラムは、.jslという拡張子で保存します。また、JSLプログラムは、テーブルプロパティとしてデータテーブルに保存することもできます。テーブルプロパティの詳細については、データテーブルの「テーブル」パネルを参照してください。JMPスクリプト言語については、『スクリプト構文リファレンス』を参照してください。

If

計算式エディタにて、関数の一覧からIf関数を選択すると、条件節、then節、else節のブロックが空白で表示されます。これらのブロックをクリックして、式や値を入力してください。たとえば、「合計」が0でない場合にだけ、「度数÷合計」を計算するには、図A.3に示すような条件式にします。

図A.3 条件式 

A Conditional Expression

If条件に新しい条件を追加するにはthen節を強調表示し、計算式エディタのキーパッドにある挿入ボタン(Image shown here)をクリックします。まず、既存のelse条件がに変更されます。挿入ボタンをもう一度クリックすると、else節が追加されます。then節またはelse節を強調表示して挿入ボタンを繰り返しクリックすると、else節条件がに変わるか、または新しいが追加されます。

節を削除するには、その上のthen節を選択し、Deleteキーを押すか、または計算式エディタのキーパッドにある削除ボタン(Image shown here)をクリックします。

JMPでは、条件節でのゼロは偽を意味します。条件節が欠測値である場合、どの節も実行されず、欠測値が戻されます。ゼロでなく、また、欠測値でもないすべての数値は真を意味します。

Match

式を複数の値と比較し、最初に一致した値に対するthen節の結果を戻します。Matchでは、各値と比較する式を1つだけ入力すれば済みます。

計算式エディタでいずれかのデータ列を選択して[Match]を選択すると、ポップアップメニューに、次の2つのオプションが表示されます。

[Matchの引数をデータから追加]オプション。このオプションを選択すると、該当する列の全水準に対する節が自動的に追加されます。別の方法として、Shiftキーを押しながら[条件付き]を選択し、[Match]を選択することもできます。図A.4の左側は、自動的に追加された節を示しています。

[追加しない]オプション。このオプションを選択した場合は、ユーザ自身が各節を追加していってください。図A.4の右側は空の節を示しています。これらの空の節を、自分で埋めていってください。

図A.4 Match関数の使用例 

Examples of Using the Match Function

自動的に引数が挿入されている場合は、then節を強調表示してから式を入力します。引数が空の場合は、「式」「値」、または「then節」のいずれかを強調表示して、式を入力します。計算式内のいずれかの式を強調表示した後、Matchをクリックした場合は、強調表示した式が「式」に代入されたMatch関数が作成されます(この時、「then節」「値」は空白のままです)。

MatchIfよりも速く計算でき、使用するメモリも少なくて済みます。これは、変数がデータテーブル内の各行で一度評価されるだけだからです。If条件は、節が真になるまで、各行のIf節で変数を評価する必要があります。Match条件とIf条件の違いについては、比較関数を参照してください。

IfMatchは、条件の一番上から最初の真の節を検索し、対応する結果の式を評価して戻します。後続の真の節は無視されます。

次の例は、年齢の値に従って、値が設定されています。

図A.5 Match関数の例 

An Example of Using the Match Function

メモ: Matchは末尾の空白を無視しますが、Ifは無視しません。

Match関数は、条件節が欠測値の場合には、欠測値を戻します。そのため、欠測値に対する処理を別に記述する必要があります。

Choose

Choose関数は、Match関数に似ていますが、条件の引数が、1から始まる連続した整数になっています。条件にマッチした場合、対応するの値が戻されます。図A.6は、Choose関数の例です。Choose関数は、条件にあてはまる節の結果式を評価し、その値を戻します。

図A.6 Choose条件の例 

Example of a Choose Condition

式を強調表示してChooseをクリックすると、計算式エディタは1つのを伴う新しい条件式を作成します。If条件の場合と同様に、キーパッドの挿入ボタン(Image shown here)や削除ボタン(Image shown here)を使って節の追加や削除ができます。

Chooseは式を評価し、直ちにその値に対応する結果の節に行って値を戻します。Chooseを使った場合、1から始まる連続した整数を生成する式を一つ入力するだけで、後は各整数に対応する結果の節を入力するだけで済みます。

IfMax

引数の各ペアにおいて、1つ目の引数が最大値となっているペアの結果(各ペアの2つ目)を戻します。最大値となる式が複数ある場合には、最初の最大値に対応する結果を戻します。すべての式が欠測値で、最後の結果式が指定されていない場合、欠測値を戻します。すべての式が欠測値であり、最後の結果式が指定されている場合は、最後の結果式の評価を戻します。条件式は数値になる必要がありますが、結果式はどのような値でもかまいません。

IfMin

引数の各ペアにおいて、1つ目の引数が最小値となっているペアの結果(各ペアの2つ目)を戻します。最小値となる式が複数ある場合には、最初の最小値に対応する結果を戻します。すべての式が欠測値で、最後の結果式が指定されていない場合、欠測値を戻します。すべての式が欠測値であり、最後の結果式が指定されている場合は、最後の結果式の評価を戻します。条件式は数値になる必要がありますが、結果式はどのような値でもかまいません。

And &

引数が両方とも真の場合、1を戻します。それ以外の場合、0を戻します(図A.9)。図A.7の計算式では、両方の比較が真である参加者だけがグループ1に分類されます。

図A.7 And関数の作成 

Creating an And Function

Or |

引数のどちらかが真の場合、1を戻します。引数が両方とも偽の場合は0を戻します(図A.9)。図A.8の計算式では、男性と13歳より年上のすべての参加者をグループ1に割り当てます。

図A.8 Or関数の作成 

Creating an Or Function

図A.9の左側の真偽表は、2つの引数が真/偽のいずれかであるときの、And&)関数およびOr|)関数の戻り値を示しています。右側の表は、左側(a)か右側(b)のどちらか、または両方の式に欠測値がある場合の結果を示しています。

図A.9 AndOrの評価 

Evaluations of And and Or Expressions

Not !

引数が偽の場合、1を戻します。引数が真の場合、0を戻します。Not関数を使う場合、曖昧さを避けるため、必要な個所に括弧を入れてください。たとえば、!(weight==64)は真にも偽にもなり得ます(1または0)。しかし、(!weight)==64は、Notが0か1しか戻さないので、常に偽(0)となります。!(weight==64)などの式は、weight != 64と入力することもできます。

Interpolate

引数で与えられた2点(x1,y1)と(x2,y2)を線形補間してえられたy値を戻します。挿入キーによって、引数xyのペアを追加していくことができます。Interpolateは、x値に対応するyの値を戻します。

図A.10 Interpolate関数の例 

Examples of Interpolate

Step

Step関数はInterpolateと似ていますが、引数x以下で一番大きいxの値に対応するyの値を戻します。つまり、この関数は、線形補間ではなく、ステップ関数の補間によって、与えられたxに対するyを求めます。Interpolate関数と同様、xyのペアはいくつでも持つことができます。

図A.11 Step関数の例 

Examples of Step

For

範囲条件が真である限り、本体引数のステートメントを繰り返します。初期値次の式は、繰り返しを制御します。

While

条件を繰り返し判定し、が真でなくなるまで本体を繰り返します。

Break、Continue

Breakは、ループを完全に停止して、ループの後に続くステートメントを継続します。Continueは、ループの現在の反復を終了して、次の反復を開始します。

両方ともForWhile、およびFor Each Rowループで使用されます。

Stop

実行中のスクリプトを直ちに停止します。

Return

ユーザ定義の関数から式の値を戻します。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).