Vor ein paar Tagen habe ich einem Kunden gezeigt, wie sie in JMP Nachschlagetabellen verwenden kann, und ich dachte, es wäre eine gute Idee, dies mit allen zu teilen.
Diejenigen von Ihnen, die an anderen Stellen Lookup-Tabellen verwendet haben, wissen bereits, wie praktisch sie sein können. Für diejenigen, die noch nie eine verwendet haben, betrachten wir zunächst ein einfaches Beispiel: Zuweisen einer Buchstabennote anhand einer numerischen Note.
Nehmen wir an, wir haben die folgende Übereinstimmung zwischen numerischen und Buchstabenklassen:
E: x <60
60 <= x <70
C: 70 <= x <80
B: 80 <= x <90
A: 90 <= x
Wir möchten den untenstehenden numerischen Noten automatisch Buchstabenstufen zuweisen - aber wie?

Am gebräuchlichsten ist die Verwendung einer Formelspalte mit einer IF-Klausel. Anweisungen werden in der angegebenen Reihenfolge ausgewertet. Sobald eine Anweisung mit "True" ausgewertet wird, wird die Ausführung angehalten. Die Klausel muss daher folgendermaßen erstellt werden:


Diese Technik funktioniert einwandfrei, kann jedoch in bestimmten Fällen unhandlich werden:
- Was passiert, wenn wir eine Liste vieler Werte betrachten müssen, nicht nur einiger? Das Schreiben einer langen IF-Klausel ist langwierig und fehleranfällig.
- Was ist, wenn die Liste der Werte nicht im Voraus bekannt ist, sondern zur Laufzeit bestimmt wird? Wir können damit umgehen, indem wir JSL verwenden, um Code dynamisch zu schreiben, aber die meisten Leute ziehen es vor, dies zu vermeiden, wenn sie können.
Glücklicherweise können wir solche Fälle mit Hilfe einer leistungsstarken Matrixfunktion lösen: Loc Sorted ().
Wie funktioniert Loc Sorted ()?
- Loc sortiert ( x . y ) nimmt als Eingabe eine Matrix x , sortiert von niedrig nach hoch und y , die entweder vom Matrix- oder vom Skalartyp sein kann.
- Loc Sorted () gibt den Index (oder die Indizes, wenn y ist eine Matrix) des letzten Wertes in x das ist weniger als oder gleich y .
Wenn Sie diesen Code ausführen, erhalten Sie beispielsweise ein Ergebnis von [3], da 14 größer oder gleich der in der gespeicherten Zahl ist 3 rd Position der x Matrix, aber weniger als die in der 4 die Position des x Matrix:
x = [0, 5,10,15,20,25];
y = 14;
show (loc sortiert (x, y));

Wenn Sie diesen Code ausführen, erhalten Sie ein Ergebnis von [4,6,6,1]:
x = [0, 5,10,15,20,25];
y = [17, 25, 50, 3];
show (loc sortiert (x, y));

Beachten Sie, dass das Minimum von x Matrix sollte der niedrigste Wert von sein y Sie erwarten, zu begegnen, weil 1 für alle zurückgegeben wird y Wert, der kleiner ist als alle x Werte:

Im Beispiel für die Briefnote können wir loc sort () verwenden, um die Note aus der Liste {"E", "D", "C", "B", "A"} auszuwählen:

Das ist großartig, wenn wir nur einige Kategorien berücksichtigen müssen. Aber was passiert, wenn wir eine ganze Tabelle voller Optionen haben oder nicht nur einen einzelnen Wert nachschlagen müssen, sondern mehrere verschiedene Werte nachschlagen und sie zusammen verwenden müssen?
Zum Glück ist das einfach zu machen. Alles, was wir brauchen, ist eine zusätzliche Tabelle, um die Informationen zu speichern. Die Berechnung der Steuer aus einer Steuertabelle ist ein klassisches (und zeitnahes) Beispiel für einen solchen Fall.
*** Warnung: Ich bin kein Steuerberater. Ich spiele keine im Fernsehen. Bitte beziehen Sie Ihre Steuertabellen für 2013 von die IRS .
Im heutigen Beispiel Dies dient nur zur Veranschaulichung, sollte nicht als Steuerberatung verstanden werden und stammt nicht von einem Steuerfachmann verwenden wir die nachstehende Tabelle, die ich aus Informationen zusammengestellt habe online gefunden .

Unser Ziel ist es, die geschuldete Steuer unter Berücksichtigung der obigen Tabelle und der Höhe des zu versteuernden Einkommens zu berechnen.
Zuerst müssen wir diese Informationen in eine Datentabelle einfügen (beachten Sie, dass wir den Inhalt der ersten Spalte aufgrund der Funktionsweise von Loc Sorted () um 1 $ verringern.) Um dem Beispiel zu folgen, verwenden Sie die folgenden Namen für die Tabelle und Spalten oder Laden Sie das Beispiel von JMP File Exchange herunter (Download erfordert kostenloses SAS-Login).
Tabellenname: VerheiratetFilingJointlyTable
Spaltennamen:
- Schnitte (Einkommensstopp für jede Steuerklasse)
- PreTax (Summe der geschuldeten Einkommensteuer in allen unteren Klammern)
- MargRate (Steuersatz auf den letzten „Einkommensblock“)

In der Tabelle oben möchten wir die Steuer für die zu versteuernden Einkommen ermitteln VerheiratetFilingJointlyTable :

Mit Loc Sorted () und den beiden obigen Tabellen können Sie beginnen.
In der Einkommenstabelle fügen wir durch Auswahl eine Spalte hinzu Cols> Neue Spalte…

Wir geben "Tax" als Spaltennamen ein und wählen "Currency" als Format.
Wir wählen dann "Formel" aus der Dropdown-Liste "Spalteneigenschaften" aus. Nun erscheint der Formel-Editor.
Wussten Sie, dass wir ein Programm tatsächlich in eine Spaltenformel eingeben können? Dies werden wir hier tun - und obwohl unser Skript nur aus drei Zeilen besteht, ist dies der einfachste und am wenigsten fehleranfällige Weg, indem Sie aus einem Skriptfenster kopieren und einfügen.
Öffnen Sie also ein Skriptfenster ( Datei> Neu> Neues Skript ) und geben Sie Folgendes ein:

Linie 1 zeigt die Variable dt zur Steuertabelle:
- Wann immer wir eine Spalte aus der Steuertabelle verwenden möchten - anstelle der Einkommenstabelle, in der sich die Formel tatsächlich befinden wird - müssen wir diesen Spaltennamen voranstellen dt .
Zeile 3 legt fest, welche Zeile der Steuertabelle wir für eine bestimmte Einkommensmenge verwenden werden:
- Wir nennen Loc Sorted () unter Verwendung aller Werte aus der Spalte "Kürzungen" in der Steuertabelle als x und den Wert in der aktuellen Zeile der Tabelle Taxable Income als y .
- Das Ergebnis dieses Anrufs speichern wir als Halterung , die wir verwenden werden, um die Zeile zu finden, die wir in der Steuertabelle benötigen.
- Zum Beispiel für den ersten Einkommenswert, da $ 41.196,47 zwischen den in den Zeilen 2 und 3 der Steuertabelle enthaltenen Cutoffs liegt, ist Klammer gleich 2, so dass wir am Ende Zeile 2 in der Steuertabelle verwenden, um die Steuer zu berechnen.
Zeile 5 berechnet die Steuer. Am Beispiel des ersten Einkommens von 41.196,47 US-Dollar:
- dt: PreTax [Halterung] ist der Wert, der in der entsprechenden Zeile der PreTax-Spalte der Steuertabelle gespeichert ist. Für den ersten aufgelisteten Einkommenswert ist dies die Summe aller Steuern vom Einkommen, die unterhalb der Grenze liegen, die 41.196,47 USD am nächsten kommt, aber nicht darüber hinausgeht. (In diesem Fall sind es 1.785 USD.)
Zu diesem Betrag müssen wir folgendes hinzufügen:
- dt: MargRate [Klammer] der Grenzsteuersatz in der höchsten Klammer, auf den 41.196,47 USD besteuert werden (in diesem Fall 0,150), und
- : Steuerpflichtiges Einkommen - dt: Kürzungen [Klammer] Dies ist die Höhe des mit diesem Satz besteuerten Einkommens (in diesem Fall 41.196,47 USD - 17.850 USD).
Nachdem wir das Skript in das Skriptfenster eingegeben haben, wählen wir alles aus, kopieren es und fügen es in das rote Feld des Formel-Editors ein (der bisher nichts enthielt):

Nachdem Sie auf "OK" geklickt haben, um den Formeleditor zu schließen, und auf "OK", um den Spalteneditor zu schließen, stellen wir fest, dass die Steuer für jede Zeile in der Einkommenstabelle berechnet wurde. Mit dem "+" - Symbol wird angezeigt, dass die Steuer eine Formel ist -basierend; Die Nachschlagetabelle muss geöffnet sein, wenn Sie die Formel neu bewerten möchten. (Wenn Sie die Formel an dieser Stelle lieber entfernen möchten, klicken Sie einfach auf das Symbol „+“, wählen Sie „Löschen“, wenn der Formeleditor geöffnet wird, und klicken Sie auf „OK“.)

Für diejenigen unter Ihnen, die Skripts bevorzugen, ist die Lösung ähnlich. Im folgenden Skript habe ich Werte ohne Formel direkt in die Tabelle geschrieben. Die Verwendung der Option formula () in der << New Column () - Nachricht würde jedoch genauso gut funktionieren.

Und da hast du es. Das ist alles, was Sie brauchen, um Lookup-Tabellen in JMP zu verwenden! Wenn Sie wie viele unserer Kunden sind, sehen Sie viele Möglichkeiten für ihre Nutzung - genießen Sie es.