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 nello scripting di JMP 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 devo dividere questo tavolo. 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 precedenti ed errate. Per arrivare a quel pezzo di (ri) codice sono andato tramite Recode... nel menu Colonne, ed è l'unico pezzo dello script che non riesco a capire. (In genere è uno script molto semplice.)
Nell'esempio pubblicato di seguito, le lettere maiuscole ei numeri riflettono le variazioni del nome del metodo di prova effettivo utilizzato. Ad esempio, A è un test (diciamo il test del pH), B è un altro test (ad esempio la viscosità). LA(1), LA(2), ... A(n) sarebbe tutto ricodificato in A, quindi B(1), ... da B(n) a B, e così via. Ora come funziona il software ora da esattamente questo pezzo di codice quali variabili appartengono insieme? Ho controllato la guida agli script e l'indice degli script ma ancora non capisco. _rcOrig e _rcNow, cosa significano? Lo script, cioè le variabili nelle rispettive righe, sono disposte esattamente come nella mia copia dello script completo.
Grazie per una 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;
CIAO,
Se è sempre una lettera, potresti voler creare una formula semplice come questa:
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));
Ho creato una nuova colonna in una tabella di dati con i valori di test 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 sotto è 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 sono impostati i valori per ciascuna delle coppie valore/risultato