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 ich dieses Skript mit einer Kopie von entwickelt habe Steigen Sie ein in JMP Scripting Als ich auf meinem Schoß lag, 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 Daten in der Datenbank aus älteren Excel-Dateien stammt, ist aufgrund früherer, fehlerhafter Einträge eine gewisse Neukodierung der Spalte mit den Testnamen erforderlich. Um zu diesem Teil des (Neu-)Codes zu gelangen, bin ich im Menü „Spalten“ über „Neu kodieren...“ gegangen, und es ist der einzige Teil im Skript, den ich nicht verstehen kann. (Im Allgemeinen handelt es sich um ein sehr einfaches Skript.)
Im unten aufgeführten Beispiel spiegeln die Großbuchstaben und Zahlen Variationen des Namens der tatsächlich verwendeten Testmethode wider. Beispielsweise 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 alles in A umkodiert werden, dann B(1), ... B(n) zu B und so weiter. Wie erkennt die Software nun genau aus diesem Codeabschnitt, welche Variablen zusammengehören? Ich habe den Skriptleitfaden und den Skriptindex überprüft, verstehe es aber immer noch nicht. _rcOrig und _rcNow, was bedeuten sie? Das Skript, dh die Variablen in ihren jeweiligen Zeilen, sind genauso angeordnet wie in meiner Kopie des vollständigen Skripts.
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;
Hallo,
Wenn es immer ein Buchstabe ist, können Sie eine einfache Formel wie diese erstellen:
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));
Ich habe eine neue Spalte in einer Datentabelle mit den Testwerten erstellt, die Sie in der von Ihnen bereitgestellten JSL hatten.

Anschließend habe ich das Dialogfeld „Neu kodieren“ 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 gegeben hat.
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-/Ergebnispaare festgelegt werden