OK, ich habe begonnen, mich mit JMP vertraut zu machen, und habe erfolgreich an meinem ersten Skript gearbeitet, um eine Datentabelle aus einer Datenbank zu extrahieren, neu anzuordnen und zu formatieren. Funktioniert gut und spart Zeit. Da habe ich dieses Skript mit einer Kopie von entwickelt Springe in JMP Scripting Auf meinem Schoß war ich natürlich daran interessiert, das Drehbuch zu verstehen. Hier kommt also das Problem.
Stellen Sie sich einen Herstellungsprozess vor, der viele verschiedene Messungen erfordert. Die Datenbank enthält alle Testmethoden in einer Spalte und alle Testergebnisse in einer anderen Spalte. Um zu bekommen, was ich will, muss ich diese Tabelle teilen. Da jedoch ein Großteil der in der Datenbank enthaltenen Daten aus älteren Excel-Dateien stammt, ist aufgrund früherer, fehlerhafter Einträge eine Neukodierung der Spalte mit den Testnamen erforderlich. Um zu diesem (Neu-) Code zu gelangen, habe ich im Menü "Spalten" die Option "Neu codieren" verwendet. Dies ist der einzige Teil des Skripts, den ich nicht verstehen kann. (Es ist im Allgemeinen ein sehr einfaches Skript.)
In dem unten angegebenen Beispiel geben die Großbuchstaben und Zahlen Variationen des Namens der tatsächlich verwendeten Testmethode wieder. Zum Beispiel ist A ein Test (z. B. pH-Test), B ist ein anderer Test (z. B. Viskosität). A (1), A (2), ... A (n) würde alle in A umcodiert, dann B (1), ... B (n) bis B und so weiter. Wie kommt nun die Software aus genau diesem Code heraus, welche Variablen zusammengehören? Ich habe die Skriptanleitung und den Skriptindex überprüft, verstehe sie aber immer noch nicht. _rcOrig und _rcNow, was bedeuten sie? Das Skript, dh Zeilen und Spalten, sind genau so angeordnet, wie sie in meiner Kopie des vollständigen Skripts enthalten sind.
Danke für eine Antwort.
dt << Recode Column(
dt:TestName,
{Map Value(
_rcOrig,
{"A(1)", "A(2)",
"A(3)", "A(4)",
"A(5)", "A(6)", "B(1)",
"B(2)", "C(1)", "C(2)",
"C(3)", "C(4)", "D(1)", "D(2)", "E(1)",
"E(2)", "F(1)", "F(2)", "G(1)", "G(2)",
"H(1)", "H(2)", "I(1)", "I(2)",
"I(3)", "I(4)", "J(1)", "J(2)", "K(1)",
"K(2)", "L(1)", "L(2)",
"M(1)", "M(2)", "M(3)",
"M(4)"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;Ich habe eine neue Spalte in einer Datentabelle mit den Testwerten erstellt, die Sie in der von Ihnen bereitgestellten JSL hatten.

Ich habe dann den Neukodierungsdialog geöffnet und die Neukodierungsänderungen vorgenommen.

Ich ging dann zum roten Dreieck und wählte aus
Skript => Im Skriptfenster speichern
und unten ist, was es mir gab.
Names Default To Here( 1 );
dt = Data Table( "Big Class" );
dt << Begin Data Update;
col1 = dt << New Column( dt:test );
col1 << Set Name( "test 2" );
dt << Move Selected Columns( {col1}, after( dt:test ) );
dt << Recode Column(
dt:test,
{Map Value(
_rcOrig,
{"A(1)", "A", "A(2)", "A", "A(3)", "A", "A(4)", "A", "A(5)", "A", "A(6)",
"A", "B(1)", "B", "B(2)", "B", "C(1)", "C", "C(2)", "C", "C(3)", "C", "C(4)",
"C", "D(1)", "D", "D(2)", "D", "E(1)", "E", "E(2)", "E", "F(1)", "F", "F(2)",
"F", "G(1)", "G", "G(2)", "G", "H(1)", "H", "H(2)", "H", "I(1)", "I", "I(2)",
"I", "I(3)", "I", "I(4)", "I", "J(1)", "J", "J(2)", "J", "K(1)", "K", "K(2)",
"K", "L(1)", "L", "L(2)", "L", "M(1)", "M", "M(2)", "M", "M(3)", "M", "M(4)",
"M"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;
Im Beispiel können Sie sehen, wie die Werte für jedes der Wert / Ergebnis-Paare festgelegt werden
Hallo,
Wenn es sich immer um einen Buchstaben handelt, möchten Sie möglicherweise eine einfache Formel wie die folgende erstellen:
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));