JSL Script usando bucles y resumenNecesito alguna sugerencia sobre cómo hacer que este ciclo funcione: sigue teniendo problemas en la línea con Group (Box (i)) y pensé que era un problema con el número o los corchetes / nombres de columna incorrectos. pero ajustar esto no ayudó
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 ) )
)
);
Acceso a los datosFusión y limpieza de datosRe: JSL Script usando bucles y resumenCreé una tabla de datos con una columna llamada ID de lugar.Lo llené con 100 valores aleatorios que oscilaron entre 1 y 850.

Luego ejecuté la sección de código que varios Box y ActualLoc y creó una tabla de datos que se ve así:

No veo la intención de realizar estas operaciones.
Me parece (podría estar fácilmente equivocado) que no tiene la comprensión de algunos elementos que está utilizando.Dentro de su primer ciclo For(), crea las mismas columnas de Scenario, Box y ActualLoc 5 veces.Y dado que JMP no permitirá que una columna tenga el mismo nombre, cuando cree Scenario, Box y ActualLoc durante el primer ciclo, esos son los nombres reales que usará.Sin embargo, en el bucle 2, JMP forzará los nombres a Scenario 2, Box 2 y ActualLoc 2. Los bucles 3, 4 y 5 repiten este comportamiento.Las fórmulas utilizadas también son un poco confusas.Está utilizando repetidamente la especificación de (:Place ID - i).Dado que esto se usa en una fórmula, lo que significa que la fórmula se aplicará a cada fila de la tabla de datos, y el resultado de este cálculo será el valor de la variable ID de lugar para la fila dada (es decir, la fila 1 en mi la tabla de datos tiene el valor 268) y restará el valor actual de i, que tiene el valor de 1 en el primer bucle, 2 en el segundo bucle, etc. Por lo tanto, para la fila 1, los valores oscilan entre 267 y 263 .Sospecho que puede estar pensando que :Place ID -1 hace referencia a la columna que viene antes de :Place ID.
¿Puede ayudarme y aclarar qué está intentando hacer con su tabla de datos con la columna Place ID en ella?
Re: JSL Script usando bucles y resumenMMMM, no estoy seguro... mis habilidades con el guión son mediocres. Aquí está mi código completo. Funciona bien hasta la sección de bucle con el paso de resumen.
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 );
);
Re: JSL Script usando bucles y resumenSupuse que Box hacía referencia a una variable de memoria llamada Box, que es una lista y contiene varios elementos, cada uno de los cuales es el nombre de una variable. Si no es esto, ¿qué es Box?Re: JSL Script usando bucles y resumenGracias Jim
Entiendo la necesidad de agregar la variable de lista y el error tipográfico. sin embargo, cuando actualicé el código y lo ejecuté, aparece este error. Mis nombres de columna son "Cuadro 1". "Cuadro 2", etc
Sin embargo, intenté cambiar los nombres de las columnas a Box1, Box 2 y Box3, etc., y obtuve el mismo error. ¿alguna sugerencia?

Re: JSL Script usando bucles y resumen// 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 );
);