CIAO,
nonostante abbia esaminato molte discussioni / l'indice degli script .., non sono riuscito a ottenere una risposta, come scrivere uno script JSL, che prenderà il sopravvento sul nuovo comando di colonna consentendo di inserire dati di sequenza con ripetizione N volte di ciascun valore. So come farlo manualmente, grazie a una risposta di Mark B... in una di quelle discussioni, ma faccio fatica a scrivere una sceneggiatura
per esempio
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 ha già fornito una soluzione.
Le funzioni JMP, Sequence() e Count() sono funzioni molto interessanti quando si lavora con una tabella di dati, poiché entrambe le funzioni si basano su Row() della tabella di dati corrente.
Potrebbero esserci momenti in cui desideri che la sequenza sia solo in una matrice. Un metodo è la funzione di matrice Direct Product(amat, bmat) . Lo script seguente è simile al tuo script originale; crea seq un vettore di valori ripetuti, quindi li assegna alla nuova colonna.
Questo viene fornito per tua informazione. Se non hai utilizzato matrici o studiato algebra lineare, questa non sarebbe la prima funzione che potrebbe venirti in mente.
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 funzione Sequence() funziona in realtà solo all'interno di una formula. Dai un'occhiata all'indice degli script
Aiuto==>Indice script.......Sequenza
Ecco un esempio funzionante
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) || "));"
)
);