¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?Hola,
Quería ejecutar varias pruebas t donde tengo una lista de múltiples X e Y. ¿Hay alguna manera de hacer esto usando un script? Modifiqué ligeramente el script que estoy usando para el conmutador de 1 columna, pero no sé cómo hacerlos ambos al mismo tiempo. Por ejemplo, esta prueba más pequeña (3x3):
Oneway(
Y(:Name("A")),
X(:Name("1")),
t Test(1),
Column Switcher(:Name("A"), {:Name("A"), :Name("B"), :Name("C")}),
Column Switcher(:Name("1"), {:Name("1"), :Name("2"), :Name("3")})
);
rpt = Current Report();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox(1)] << get scriptable object;
colswitch_list = colswitcher_obj << get list;
/* Loop through each column in the colswitch_list */
For(i = 1, i <= N Items(colswitch_list), i++,
/* Change here */
dt1 = rpt[Outline Box("t Test")][Table Box(1)] << make combined data table;
/* Concatenate the tables */
If(i == 1,
main_tb = dt1;
main_tb << Set Name("All");
,
Try(main_tb << Concatenate(dt1, Append to First Table));
Close(dt1, No Save);
);
/* Close temporary tables and switch next column */
colSwitcher_obj << Next;
);
Automatización y secuencias de comandosRe: ¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?Está utilizando referencias de objetos de conmutador de columnas incorrectas dentro de sus bucles (el bucle interno que tiene N elementos (colswitch_list2) debería cambiar colSwitcher_obj2 << Siguiente).

También uso

al publicar JSL en la comunidad JMP, ya que facilita mucho la lectura de la publicación.
Re: ¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?De hecho, tiene razón, ahora funciona perfectamente para columnas de 10x10 (consulte el script a continuación).
Pero tengo el problema de que si no tengo exactamente la misma cantidad de columnas X que de columnas Y, ¡el cambio no funciona! ¿Alguna idea de qué estoy haciendo mal?
// Análisis y conmutadores de columnas
De una sola mano(
Y(:Nombre("553")),
X(:Nombre("1")),
Prueba t(1),
Conmutador de columnas(:Nombre("1"), {:Nombre("1"), :Nombre("2"), :Nombre("3"), :Nombre("4"), :Nombre("5" ), :Nombre("6"), :Nombre("7"), :Nombre("8"), :Nombre("9"), :Nombre("10")}),
Conmutador de columnas(:Nombre("553"), {:Nombre("553"), :Nombre("554"), :Nombre("555"), :Nombre("556"), :Nombre("557" ), :Nombre("558"), :Nombre("559"), :Nombre("560"), :Nombre("561"), :Nombre("562")}));
//Creación de informe
rpt = Informe actual();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << obtener objeto programable;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << obtener objeto programable;
colswitch_list = colswitcher_obj << obtener lista;
colswitch_list2 = colswitcher_obj2 << obtener lista;
// Recorre cada variable Y
Para (j = 1, j <= N elementos (colswitch_list), j++,
// Recorre cada variable X
Para (k = 1, k <= N elementos (colswitch_list2), k++,
/* Cambiar aquí */
dt1 = rpt[Cuadro de esquema( "t Test")][Cuadro de tabla( 1 )] << Crear tabla de datos combinados;
/* Concatenar las tablas */
Si(j == 1 & k == 1,
tb_principal = dt1;
main_tb << Establecer nombre ("Todos");
,
Try( main_tb << Concatenar( dt1, Agregar a la primera tabla ) );
Cerrar( dt1, Sin guardar );
);
// Cambiar a la siguiente columna X
colSwitcher_obj << Siguiente;
esperar(0);
);
// Cambiar a la siguiente columna Y
colSwitcher_obj2 << Siguiente;
esperar(0);
);
Re: ¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?Difícil decirlo sin saber nada de tus datos. Por ejemplo, podría encontrarse con un problema en el que una de sus columnas tenga una gran cantidad de categorías y eso esté causando problemas. Quizás agregando wait(0); después de cada << siguiente podría ayudar un poco, pero lo más probable es que el script siga siendo muy lento.
Además, creo que está utilizando un recuento máximo incorrecto para su variable k al menos (¿no debería ser N elementos (col_switch_list2))?
Re: ¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?Solucioné mi problema con el siguiente script, pero cuando lo ejecuto en la base de datos completa, JMP falla (supongo que es un problema de memoria), ¿alguna idea de cómo podría solucionar el problema de la memoria?
De una sola mano(
Y( :Nombre( "A") ),
X( :Nombre( "1" ) ),
prueba t( 1 ),
Conmutador de columnas( :Nombre( "1" ), {:Nombre( "1" ), :Nombre( "2" ), :Nombre( "3" )} ),
Conmutador de columna (
:Nombra un" ),
{:Nombre( "A"), :Nombre( "B"), :Nombre( "C")}
)
);
rpt = Informe actual();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << obtener objeto programable;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << obtener objeto programable;
colswitch_list = colswitcher_obj << obtener lista;
// Recorre cada variable Y
Para (j = 1, j <= N elementos (colswitch_list), j++,
// Recorre cada variable X
Para (k = 1, k <= N elementos (colswitch_list), k++,
/* Cambiar aquí */
dt1 = rpt[Cuadro de esquema( "t Test")][Cuadro de tabla( 1 )] << Crear tabla de datos combinados;
/* Concatenar las tablas */
Si(j == 1 & k == 1,
tb_principal = dt1;
main_tb << Establecer nombre ("Todos");
,
Try( main_tb << Concatenar( dt1, Agregar a la primera tabla ) );
Cerrar( dt1, Sin guardar );
);
// Cambiar a la siguiente columna X
colSwitcher_obj << Siguiente;
);
// Cambiar a la siguiente columna Y
colSwitcher_obj2 << Siguiente;
);
Re: ¿Hay alguna manera de crear un informe para un conmutador de 2 columnas simultáneamente?¿Existe alguna razón específica para utilizar el conmutador de columnas para esto? Puede simplemente recorrer sus columnas, volver a crear el informe sobre la marcha y extraer los resultados.