Salut,
malgré la recherche dans de nombreuses discussions / l'index de script .., je n'ai pas pu obtenir de réponse, comment écrire un script JSL, qui prendra en charge la nouvelle commande de colonne permettant d'entrer des données de séquence avec N fois la répétition de chaque valeur. Je sais comment le faire manuellement - grâce à une réponse de Mark B... dans l'une de ces discussions, mais j'ai du mal à écrire un script
par exemple
N_DOE= 10
N_XRF =4
=> {1,1,1,1,2,2,2,2,3,3,3,3, ...10,10,10,10}
//How may I get a column with repeating values
dt=current data table();
N_DOE=10;
N_XRF=4;
seq = sequence(1,N_DOE,1,N_XRF);
dt << new column("Run", "numeric", "ordinal");
//dt:run << set each value(seq,); // this works, but it is just"1" for all rows
dt:run << set each value(i=1,i<N_DOE></N_DOE>@PS_Ato , Jim, @txnelson a déjà proposé une solution.
Les fonctions JMP, Séquence() et Compter() sont des fonctions très intéressantes lorsque vous travaillez avec une table de données, car les deux fonctions reposent sur le Ligne() de la table de données actuelle.
Il peut y avoir des moments où vous voulez que la séquence soit juste dans une matrice.Une méthode est la fonction matricielle Produit direct (amat, bmat) .Le script ci-dessous est similaire à votre script d'origine ; ça crée suite un vecteur de valeurs répétées, puis les affecte à la nouvelle colonne.
Ceci est fourni à titre informatif.Si vous n'avez pas utilisé de matrices ou étudié l'algèbre linéaire, ce ne serait pas la première fonction qui pourrait vous venir à l'esprit.
Names Default to Here(1);
N_DOE=10;
N_XRF=4;
New Table("Dummy", add rows(N_DOE * N_XRF));
dt=current data table();
seq = Transpose(Direct Product(Index(1,N_DOE),J(1,N_XRF,1)));
dt << new column("Run", "numeric", "ordinal", values(seq));
/* Log output
seq = Transpose(Direct Product(Index(1,N_DOE),J(1,N_XRF,1)));
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10]
*/
La fonction Sequence() ne fonctionne vraiment que dans une formule. Jetez-y un œil dans l'Index des scripts
Aide==>Index des scripts.......Séquence
Voici un exemple de travail
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
N_DOE=10;
N_XRF=4;
dt << new column("Run", "numeric", "ordinal");
// Create the JSL required to set the format and then
// execute it
Eval( Parse(
"dt:run << set formula( sequence(1, " || char(N_DOE) ||
", ince = 1, n = " || char(N_XRF) || "));"
)
);