Hallo,
Trotz Durchsicht vieler Diskussionen / des Scripting-Index .. konnte ich keine Antwort bekommen, wie man ein JSL-Skript schreibt, das den neuen Spaltenbefehl übernimmt, der es ermöglicht, Sequenzdaten mit N-facher Wiederholung jedes Werts einzugeben. Ich weiß, wie man es manuell macht - dank einer Antwort von Mark B... in einer dieser Diskussionen, aber ich habe Mühe, ein Skript zu schreiben
z.B
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 hat bereits eine Lösung geliefert.
Die JMP-Funktionen, Reihenfolge() Und Zählen() sind sehr coole Funktionen beim Arbeiten mit einer Datentabelle, da beide Funktionen auf die angewiesen sind Reihe() der aktuellen Datentabelle.
Es kann vorkommen, dass Sie die Sequenz nur in einer Matrix haben möchten.Eine Methode ist die Matrixfunktion Direktes Produkt (amat, bmat) .Das folgende Skript ähnelt Ihrem ursprünglichen Skript; es erstellt seq ein Vektor wiederholter Werte und weist sie dann der neuen Spalte zu.
Dies wird als FYI bereitgestellt.Wenn Sie noch keine Matrizen verwendet oder lineare Algebra studiert haben, wäre dies nicht die erste Funktion, die Ihnen in den Sinn kommt.
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]
*/
Die Funktion Sequence() funktioniert wirklich nur innerhalb einer Formel. Schauen Sie es sich im Scripting Index an
Hilfe==>Scripting Index.......Sequence
Hier ist ein funktionierendes Beispiel
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) || "));"
)
);