SAS vers JSL - Faire des boucles...Je suis un utilisateur SAS de longue date obligé d'apprendre JSL ...
Les choses que j'ai trouvées faciles dans SAS semblent si difficiles dans JSL...
Quelqu'un pourrait-il me montrer comment fonctionnent les boucles Do Loops dans JSL en partageant avec moi le code JSL qui générerait la table do loop imbriquée suivante à l'aide de JSL?
frustration liée aux données ;
faire temp = 1 à 10 par 1 ;
appuyez sur = 5 à 20 par 5 ;
faire temps = 1 à 1000 par 20 ;
sortir;
finir;
finir;
finir;
Cours;
Cela devrait être assez simple pour créer ces types de simulations, mais je n'arrive pas à comprendre cela.
ScriptRe: SAS vers JSL - Faire des boucles...Vous êtes au bon endroit pour obtenir de l'aide pour apprendre JSL.L'index de script est votre ami, tout comme la documentation en ligne.
Voici un extrait de code qui fait ce que vous voulez :
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 vers JSL - Faire des boucles...Tout cela est couvert dans le Scripting Guide, que je vous recommande très, très fortement de lire.Il est disponible dans la bibliothèque de documentation JMP, disponible dans le menu déroulant Aide de JMP.
Re: SAS vers JSL - Faire des boucles...Guide du programmeur C++ pour JSL peut être utile aussi. Il essaie de montrer comment l'instruction JSL for est vraiment une fonction, et savoir que cela rendra beaucoup plus facile d'obtenir la bonne syntaxe.
Re: SAS vers JSL - Faire des boucles...Merci pour l'aide pmroz
Re : SAS vers JSL - Faire des boucles...J'entends ce que vous dites ... merci ... mais c'est un peu comme si quelqu'un vous disait de lire la Bible pour comprendre le christianisme ... J'ai passé environ 2 heures dans le guide de script à chercher comment faire cela apparemment concept simple... de plus, j'ai eu beaucoup de succès en écrivant d'autres scripts... mais honnêtement, le guide de script me fait aspirer à 20k supplémentaires dans le budget d'une licence SAS.
Je ne suis pas un codeur pur et dur... Je suis un ingénieur qui essaie juste de faire avancer les choses rapidement.
Re : SAS vers JSL - Faire des boucles...Merci... c'est utile.
Re: SAS vers JSL - Faire des boucles...Je trouve qu'il est plus facile d'apprendre par l'exemple, alors regardez autant de code que vous pouvez trouver dans ce forum.Une fois que vous aurez commencé, l'index de script sera vraiment votre ami.
La JSL pour boucles et si déclaration, bien que simple dans son concept, m'a un peu déconcerté au départ.Pour raccourcir votre courbe d'apprentissage sur si , souvenez-vous qu'il s'agit d'une fonction et que la virgule représente ensuite , sinon si et autre .Ouvrir une fenêtre de script ( ctrl-T ), faites un clic droit dans la fenêtre et sélectionnez Afficher le journal intégré .Collez le code ci-dessous et cliquez sur ctrl-R pour l'exécuter.Jouez avec différentes valeurs pour a, b et c pour voir ce qui se passe.
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 vers JSL - Faire des boucles...Un exemple complet, appréciant à quel point il est difficile de se lancer dans une nouvelle langue. (L'index aide->scripting et l'aide en ligne sont des ressources complémentaires. J'utilise principalement l'index help->scripting, pour me rappeler comment cela fonctionne. L'aide en ligne pourrait être meilleure pour commencer.) J'ai mis un peu plus ici que juste nécessaire. J'ai oublié les règles SAS pour la casse des noms...
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 vers JSL - Faire des boucles...Merci SUPER USER PMROZ une fois de plus ; c'est utile.