他の場所でルックアップテーブルを使用したことのある人は、それらがどれほど便利であるかをすでに知っています。一度も使用したことがない人のために、まず簡単な例を見てみましょう。数値グレードに基づいて文字グレードを割り当てることです。
数値グレードと文字グレードの間に次の対応があるとします。
E:x <60
D:60 <= x <70
C:70≦x≦80
B:80≦x <90
A:90≦x
下の数値グレードに文字グレードを自動的に割り当てたいのですが、どうでしょうか。

最も一般的な方法は、IF句を含む式列を使用することです。文は遭遇した順序で評価され、文が“ True”と評価されると実行が停止します。したがって、次のことを念頭に置いて句を構成する必要があります。


この手法は完璧に機能しますが、残念ながら、特定の状況では煩雑になる可能性があります。
- 少数ではなく、たくさんの値のリストを考慮する必要がある場合はどうなりますか。長いIF句を書くのは面倒で間違いが起こりやすいです。
- 値の一覧が事前にわかっていないが実行時に決定された場合はどうなりますか?JSLを使用して動的にコードを書くことでこれを処理できますが、可能であればほとんどの人はこれを避けることを好みます。
幸いなことに、強力な行列関数Loc Sorted()を使用して、このようなケースに取り組むことができます。
Loc Sorted()はどのように機能しますか?
- ソートされた場所( バツ 、よ )入力として行列を取るバツ低いものから高いものへ、よ行列型またはスカラー型のどちらでもかまいません。
- Loc Sorted()は、インデックスを返します。よの最後の値の行列) バツそれ以下ですよ 。
たとえば、このコードを実行すると[14]の結果が得られます。これは、14がに格納されている数以上であるためです。 3 の2番目の位置バツ行列、ただしに格納されている数よりも小さい 4 の番目の位置バツマトリックス:
x = [0,5,10,15,20,25];
y = 14。
show(loc sorted(x、y));

同様に、このコードを実行すると[4,6,6,1]の結果が得られます。
x = [0,5,10,15,20,25];
y = [17、25、50、3]。
show(loc sorted(x、y));

の最小値はバツ行列はの最小値でなければなりませんよいずれにも1が返されるのでよすべての値よりも小さい値バツ値:

文字グレードの例では、リスト{"E"、"D"、"C"、"B"、"A"}からグレードを選ぶためにloc sorted()を使うことができます。

考慮すべきカテゴリがわずかしかない場合、これは素晴らしいことです。しかし、テーブル全体でオプションがいっぱいになっている場合、または単一の値を検索するだけでなく、複数の異なる値を検索してそれらを一緒に使用する必要がある場合はどうなりますか。
幸い、これは簡単です。必要なのは、情報を保持するための追加のテーブルだけです。課税表から税を計算することは、そのような場合の典型的な(そして時宜を得た)例です。
***警告:私は税務の専門家ではありません。テレビでは遊ばない。からあなたの2013年の課税表を入手してください IRS 。
今日の例では、これは説明のみを目的としており、税務アドバイスとして解釈されるべきではなく、税務専門家によるものでもありません。以下の表を使用します。オンラインで見つかりました 。

上記の表と課税対象の所得額を考慮して、課税対象の税金を計算することが目標です。
まず、この情報をデータテーブルに配置する必要があります(Loc Sorted()の動作方法のため、最初の列の内容を$ 1だけ下げることに注意してください)。テーブルと列 JMP File Exchangeからサンプルをダウンロードしてください。 (ダウンロードには無料のSASログインが必要です)。
テーブル名 MarriedFilingJointlyTable
列名
- プレタックス (すべての下括弧内の所得に対する未払税額)
- MargRate (所得の最後の「ブロック」に対する税率)

次の表の課税所得に対する税を決定するために、上の表を使用します。 MarriedFilingJointlyTable :

Loc Sorted()と上記の2つのテーブルを用意して、準備は完了です。
所得テーブルで、選択して列を追加します。 Cols> New Column…

列名として「税」を入力し、フォーマットとして「通貨」を選択します。
次に、[列のプロパティ]ドロップダウンから[式]を選択します。その時点で式エディタが表示されます。
実際にプログラムを列の式に入力できることをご存知ですか。それがここでやることです - そして私たちのスクリプトはたった3行ですが、これをするための最も簡単でエラーの少ない方法はスクリプトウィンドウからコピーアンドペーストすることです。
それでは、スクリプトウィンドウを開いてください( ファイル>新規>新規スクリプト )を入力して、次のように入力します。

ライン1 変数を指す dt 課税表へ
- 式が実際に存在する所得表ではなく、税表の列を使用する場合は常に、その列名の前に付ける必要があります。 dt 。
3行目与えられた所得額に対して、税テーブルのどの行を使用するかを決定します。
- 税テーブルのcuts列のすべての値を次のように使用してLoc Sorted()を呼び出します。バツおよび課税所得テーブルの現在行の値よ 。
- この呼び出しの結果はブラケットこれを使って、必要な行を税務表から見つけます。
- たとえば、最初の収入値では、41,196.47ドルが税テーブルの2行目と3行目に含まれるカットオフの間にあるため、Bracketは2になります。そのため、税テーブルの2行目で税を計算します。
5行目税金を計算します。例として、最初の収入額41,196.47ドルを使用します。
- dt:PreTax [ブラケット] 税テーブルのPreTax列の適切な行に格納されている値です。記載されている最初の所得額の場合、これは41,196.47ドルに最も近いがそれを超えない、カットオフを下回る所得に対するすべての税の合計です。(この場合、それは1,785ドルです。)
この金額に、次の製品を追加する必要があります。
- dt:MargRate [ブラケット] 41,196.47ドルが課税される最も高い括弧内の限界税率(この場合、それは0.150です)
- :課税所得 - dt:cuts [ブラケット] これは、この税率で課税される所得額です(この場合、41,196.47ドル - 17,850ドルです)。
スクリプトウィンドウにスクリプトを入力したら、すべてを選択してコピーし、数式エディタの赤いボックスに貼り付けます(これまでは何も含まれていませんでした)。

「OK」を押して数式エディタを閉じ、「OK」を押して列プロパティエディタを閉じると、税が所得表の各行に対して計算されていることがわかり、「+」アイコンで税が数式であることがわかります。ベース式を再評価するときはいつでもルックアップテーブルを開く必要があります。(この時点で式を削除したい場合は、単に「+」アイコンをクリックし、式エディタが開いたら「消去」を選択してから「OK」をクリックしてください。)

スクリプトを好む人のための解決策は似ています。以下のスクリプトでは、数式を使わずに直接テーブルに値を書きましたが、<< New Column()メッセージでformula()オプションを使用しても同様に機能します。

そして、あなたはそれを持っています。JMPでルックアップテーブルを使用するのはこれだけです。私たちの顧客の多くが好きなら、あなたは彼らの使用のためのたくさんの機会を見るでしょう - 楽しんでください。