OK, quindi ho iniziato a familiarizzare con JMP e ho lavorato con successo al mio primo script per estrarre, riorganizzare e formattare una tabella di dati da un database. Funziona bene e fa risparmiare tempo. Poiché ho sviluppato questo script con una copia di Entra in JMP Scripting sulle mie ginocchia, ero naturalmente interessato a capire la sceneggiatura. Quindi ecco che arriva il problema.
Pensa a un processo di produzione che richiede molte misurazioni diverse. Il database ha tutti i metodi di test in una colonna e tutti i risultati dei test in un'altra colonna. Per ottenere quello che voglio, ho bisogno di dividere questa tabella. Tuttavia, poiché molto di ciò che abbiamo nel database proviene da file Excel precedenti, è necessaria una ricodifica della colonna che contiene i nomi dei test a causa di voci errate precedenti. Per arrivare a quel pezzo di (ri) codice sono andato tramite Recode ... nel menu Colonne, ed è l'unico pezzo nello script che non riesco a capire. (In genere è uno script molto semplice.)
Nell'esempio pubblicato di seguito, le lettere maiuscole e i numeri riflettono le variazioni del nome del metodo di prova effettivamente utilizzato. Ad esempio, A è un test (ad esempio test del pH), B è un altro test (ad esempio viscosità). A (1), A (2), ... A (n) verrebbe ricodificato in A, quindi B (1), ... B (n) a B e così via. Ora come funziona il software ora esattamente da questo pezzo di codice che le variabili appartengono insieme? Ho controllato la guida allo scripting e l'indice di scripting ma continuo a non capire. _rcOrig e _rcNow, cosa significano? Lo script, cioè le righe e le colonne sono disposte esattamente come sono nella mia copia dello script completo.
Grazie per la risposta.
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;Ho creato una nuova colonna in una tabella dati con i valori di prova che avevi nel JSL che hai fornito.

Ho quindi aperto la finestra di dialogo Ricodifica e ho apportato le modifiche alla ricodifica.

Poi sono andato al triangolo rosso e ho selezionato
Script => Salva nella finestra dello script
e di seguito è quello che mi ha dato.
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;
Nell'esempio, puoi vedere come vengono impostati i valori per ciascuna delle coppie valore / risultato
Ciao,
Se è sempre una lettera, potresti voler creare una formula semplice come questa:
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));