Da SAS a JSL - Esegui loop...Sono un utente SAS da molto tempo costretto a imparare JSL ...
Le cose che ho trovato facili in SAS sembrano così difficili in JSL...
Qualcuno potrebbe mostrarmi come funzionano i loop in JSL condividendo con me il codice JSL che genererebbe la seguente tabella di loop nidificata utilizzando JSL?
frustrazione dei dati;
fare temp = da 1 a 10 per 1;
premere = da 5 a 20 per 5;
do time = da 1 a 1000 per 20;
produzione;
fine;
fine;
fine;
correre;
Dovrebbe essere abbastanza semplice creare questi tipi di simulazioni, ma non riesco a capirlo.
SceneggiaturaRe: SAS a JSL - Esegui loop...Sei nel posto giusto per l'assistenza all'apprendimento di JSL.L'indice di scripting è tuo amico, così come la documentazione in linea.
Ecco uno snippet di codice che fa quello che vuoi:
dt = data table("frustration");
for (temp = 1, temp <= 10, temp++,
for (press = 5, press <= 20, press+=5,
for (time = 1, time <= 1000, time+=20,
show(temp, press, time); // output
);
);
);
Re: SAS a JSL - Esegui loop...Tutto questo è trattato nella Scripting Guide, che consiglio vivamente di leggere.È disponibile nella libreria della documentazione di JMP, disponibile nel menu a discesa della Guida in JMP.
Re: SAS a JSL - Esegui loop...Guida per programmatori C++ a JSL potrebbe essere anche di aiuto. Cerca di mostrare come l'istruzione JSL for sia davvero una funzione e sapere che renderà molto più semplice ottenere la sintassi corretta.
Re: SAS a JSL - Esegui loop...Grazie per l'aiuto pmroz
Re: SAS a JSL - Esegui loop...Ho sentito quello che stai dicendo... grazie... ma è un po' come se qualcuno ti dicesse di leggere la Bibbia per capire il cristianesimo... Ho passato circa 2 ore nella guida allo scripting cercando come farlo apparentemente concetto facile... inoltre, ho avuto molto successo scrivendo altri script... ma onestamente, la guida allo scripting mi fa desiderare altri 20k nel budget per una licenza SAS.
Non sono un programmatore hardcore... Sono un ingegnere che cerca solo di fare le cose velocemente.
Re: SAS a JSL - Esegui loop...Grazie... questo è utile.
Re: da SAS a JSL - Esegui loop...Trovo più facile imparare con l'esempio, quindi guarda tutto il codice che puoi trovare in questo forum.Una volta avviato, l'indice di scripting sarà davvero tuo amico.
Il JSL per loop e Se affermazione, sebbene semplice nel concetto, inizialmente mi lasciava un po' sconcertante.Per accorciare la tua curva di apprendimento Se , ricorda che è una funzione e la virgola rappresenta poi , altrimenti se e altro .Apri una finestra di script ( ctrl-T ), fare clic con il pulsante destro del mouse nella finestra e selezionare Mostra registro incorporato .Incolla il codice sottostante e fai clic ctrl-R per eseguirlo.Gioca con valori diversi per a, b e c per vedere cosa succede.
a = 1;
b = 2;
c = 1;
if (a == b,
// then
print("a is equal to b");
,
// else if
a == c,
// then
print("a is equal to c");
,
// else
print("No match found for a");
);
Re: SAS a JSL - Esegui loop...Un esempio completo, apprezzando quanto sia difficile iniziare in una nuova lingua. (L'aiuto->indice di scripting e l'aiuto in linea sono risorse complementari. Uso principalmente l'aiuto->indice di scripting, per ricordarmi come funziona. L'aiuto in linea potrebbe essere migliore per iniziare.) Ho messo qui un po' di più del necessario. Ho dimenticato le regole SAS per il caso dei nomi...
Names Default To Here( 1 );
// what does that mean? JSL has several namespaces; the 'here' namespace is for this
// editor window and means 'press' is really 'here:press' but 'dtFrustration:press' belongs to
// the table's namespace (of column names.) You could also just use different names,
// like 'iPress' for the loop control variable. JMP's variable names are almost never
// case sensitive, the weird exception being column names, which are only sensitive <BR />// if both 'Age' and 'age' are columns...Don't do that!
// an easy way to get this table script is to make a new table with the
// JMP GUI, then use the top-left red triangle to 'Copy Table Script (No Data)'.
// By convention, JSL uses 'dt' in the variable name that holds a handle to a table.
dtFrustration = New Table( "frustration",
New Column( "temp" ), // continuous numeric by default
New Column( "press" ),
New Column( "time" )
);
// because the table might be linked to other reports, there
// is a lot of hidden messaging when the table changes. A lot.
// The messaging can be shut off and later enabled for a nice speedup.
// (to see it take longer, rerun just the loop below.)
// dtFrustration << BeginDataUpdate; // pair with EndDataUpdate, below
For( temp = 1, temp <= 10, temp++,
For( press = 5, press <= 20, press += 5,
For( time = 1, time <= 1000, time += 20,
dtFrustration << addrows( 1 );
dtFrustration:time = time;
dtFrustration:temp = temp;
dtFrustration:press = press;
)
)
);
// dtFrustration << EndDataUpdate;
Re: SAS a JSL - Esegui loop...Grazie SUPER USER PMROZ ancora una volta; questo è utile.