Script JSL che utilizza loop e riepilogoHo bisogno di qualche suggerimento su come far funzionare questo ciclo: continua a singhiozzare sulla linea con Group( Box(i) ) e ho pensato che fosse un problema con numero o parentesi / nomi di colonna errati. ma regolare questi non ha aiutato
For( j = 1, j < 3, j++,
nrj j = dt1 << Summary(
Group( Box( i ) ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
)
);
Accesso ai datiMiscelazione e pulizia dei datiRi: Script JSL che utilizza loop e riepilogoHo creato una tabella di dati con una colonna chiamata Place ID.L'ho popolato con 100 valori casuali che andavano da 1 a 850.

Ho quindi eseguito la sezione di codice che varia Box e ActualLoc e ha creato una tabella di dati simile a questa:

Non vedo l'intento di eseguire queste operazioni.
Mi sembra (potrei facilmente sbagliarmi) che tu non abbia la comprensione di alcuni elementi che stai usando.All'interno del tuo primo ciclo For(), crei le stesse colonne di Scenario, Box e ActualLoc 5 volte.E poiché JMP non consentirà a una colonna di avere lo stesso nome, quando crei Scenario, Box e ActualLoc durante il primo ciclo, questi sono i nomi effettivi che utilizzerà.Tuttavia, nel ciclo 2, JMP forzerà i nomi a Scenario 2, Box 2 e ActualLoc 2. I cicli 3, 4 e 5 ripetono questo comportamento.Anche le formule utilizzate sono un po' confuse.Stai usando ripetutamente la specifica di (:Place ID - i).Poiché questo viene utilizzato in una formula, ciò significa che la formula verrà applicata a ogni riga nella tabella di dati e il risultato di questo calcolo sarà il valore della variabile Place ID per la riga data (ovvero la riga 1 nel mio la tabella dati ha il valore 268) e sottrarrà il valore corrente di i, che ha il valore di 1 nel primo ciclo, 2 nel secondo ciclo, ecc. Pertanto, per la riga 1, i valori vanno da 267 a 263 .Sospetto che tu stia pensando che :Place ID -1 stia facendo riferimento alla colonna che precede :Place ID.
Puoi aiutarmi e chiarire cosa stai tentando di fare alla tua tabella di dati con la colonna Place ID in essa?
Ri: Script JSL che utilizza loop e riepilogoMMMM non sono sicuro... le mie capacità di sceneggiatura sono scadenti. Ecco il mio intero codice. Funziona bene fino alla sezione del ciclo con il passaggio di riepilogo.
t1 = Open( "C:\Users\ClaireR\Desktop\Example\ExampleABC.jmp" );
For( i = 1, i <= 5, i++,
dt1 << New Column( "Scenario", Numeric, "Continuous", Formula( :Place ID - i ) );
dt1 << New Column( "Box",
Character,
"Nominal",
Formula(
If( (:Place ID - i) <= 200,
"Ground",
If( (:Place ID - i) <= 250,
"Drop 1",
If( (:Place ID - i) <= 400,
"Ground",
If( (:Place ID - i) <= 450,
"Drop 2",
If( (:Place ID - i) <= 600,
"Ground",
If( (:Place ID - i) <= 650,
"Drop 3",
If( (:Place ID - i) <= 800,
"Ground",
If( (:Place ID - i) <= 850,
"Drop 4",
"Ground"
)
)
)
)
)
)
)
)
)
);
dt1 << New Column( "ActualLoc",
Character,
"Nominal",
Formula(
If( (:Place ID - i) <= 200,
"Ground",
If( (:Place ID - i) <= 250,
:Place ID 2,
If( (:Place ID - i) <= 400,
"Ground",
If( (:Place ID - i) <= 450,
:Place ID 2,
If( (:Place ID - i) <= 600,
"Ground",
If( (:Place ID - i) <= 650,
:Place ID 2,
If( (:Place ID - i) <= 800,
"Ground",
If( (:Place ID - i) <= 850,
:Place ID 2,
"Ground"
)
)
)
)
)
)
)
)
)
);
);
:Scenario << Set Name( "Scenario 1" );
:Box << Set Name( "Box 1" );
:ActualLoc << Set Name( "ActualLoc" );
mrj = {};
For( j = 1, j < 3, j++,
newDT = dt1 << Summary(
Group( Box[j] ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
);
Insert Into( mrj, newDT );
);
Ri: Script JSL che utilizza loop e riepilogoSupponevo che Box facesse riferimento a una variabile di memoria chiamata Box che è un elenco e contiene diversi elementi, ognuno dei quali è il nome di una variabile. Se non è questo, cos'è Box?Ri: Script JSL che utilizza loop e riepilogoGrazie Jim.
Capisco la necessità di aggiungere la variabile di elenco e l'errore di battitura. tuttavia, quando ho aggiornato il codice e l'ho eseguito, ottengo questo errore. I nomi delle mie colonne sono "Box 1" . "Scatola 2" ecc.
Tuttavia ho provato a cambiare i nomi delle colonne in Box1 , Box 2 e Box3 etc , e ho ricevuto lo stesso errore. eventuali suggerimenti?

Ri: Script JSL che utilizza loop e riepilogo// I am assuming that your syntax of
// nrj j = dt1 << Summary(
// was an attempt to create a pointer to each new data table
// being created in the Loop, one for each column in the list
// of columns called "Box"
// To do that, one needs to create a new List variable, and then
// populate the list by inserting the new data table reference
// by using an "Insert Into()" on each loop
// Create a list variable to hold the data table references
mrj = {};
For( j = 1, j < 3, j++,
newDT = dt1 << Summary(
// Your reference to the list variable called "Box"
// Group( Box(i) ),
// incorrect for 2 reasons. 1. When referencing a
// subscript, it is done using square brackets [ ],
// 2. the index variable you are specifying is "i",
// while the index variable for your For() loop is
// a the variable "j"
Group( Box[j] ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Sum " || Char( j ) )
);
Insert Into( mrj, newDT );
);