Obtenga el recuento para agrupar (paneles) en el generador de gráficos para verificar que la visualización sea sensibleAsí que he escrito un poco de JSL que es capaz de tomar una tabla de datos y hacer sugerencias de gráficos. Verifica el número de valores únicos, el tipo de datos de columna y el nombre de columna para evaluar qué gráfico sería el más apropiado.
Un problema que tengo es cuando usa Page, Group X, Group Y y / o Wrap y no hay muchos puntos de datos en los paneles resultantes. A continuación se muestra un ejemplo tonto utilizando Big Class. Claramente, el nombre es una variable de agrupación deficiente porque cada panel del gráfico solo contiene un punto.

Una vez que mi código haya elegido una visualización potencial, ¿cuál sería la mejor manera de verificar que el diseño no contenga en su mayoría paneles con datos dispersos / vacíos?
- Ya que sé cómo están relacionadas mis variables, puedo crear una tabla usando tabular, crear una tabla de datos oculta, crear una matriz y luego verificar la dispersión de la matriz. Esto parece largo aliento.
- Necesito contar, lo que no creo que sea posible con la función de resumen () de JSL (en JMP 12) que no crea una tabla.
- ¿Hay una manera elegante de construir la matriz de conteo?
- Normalmente, el código sugiere tres gráficos para cada elemento en la lista más numerosa (X, Y o Leyenda), por lo que quiero evitar la creación de tablas si es posible.
Gracias,
Stephen
Re: Obtenga el recuento para agrupar (paneles) en el generador de gráficos para verificar que la visualización sea sensataResulta que hay un complemento JMP que puede convertir todas las columnas de caracteres a numérico . Gracias a @M_Anderson por señalándolo .
Esto hace que sea realmente fácil de usar resume ().
Re: Obtenga el recuento para agrupar (paneles) en el generador de gráficos para verificar que la visualización sea sensataSi todas sus variables de agrupación fueran numéricas, sería más rápido, ya que el resumen sería capaz de hacer un rápido trabajo del conteo. Pero eso es muy restrictivo para los datos y / o el usuario. Podría convertir las llamadas de función de resumen a plataformas "Resumen" y crear tablas que puedan manejar columnas numéricas y de caracteres. Podrías hacer algunas pruebas de tiempo para ver si eso funciona.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\car physical data.jmp" );
dtsumm=dt << Summary(private,
Group( :type),
N( :type ),
Freq( "None" ),
Weight( "None" )
);
show(dtsumm:type<<GET values=""></GET>
Re: Obtenga el recuento para agrupar (paneles) en el generador de gráficos para verificar que la visualización sea sensataGracias por ese ejemplo. Si tengo un Grupo Y y un Grupo X (potencialmente X también) como personaje, ¿entonces necesito anidar tres para bucles? Esto se convierte rápidamente en una forma de vincular JMP en bucles, ya que las tablas de datos son de un tamaño desconocido (potencialmente, un usuario podría solicitar 30 gráficos, todos los cuales necesitan el cálculo de la matriz del panel. He limitado el programa para mostrar solo las primeras 30 sugerencias) .
Quizás este es un mejor ejemplo del uso de datos físicos de automóviles, lo que esperaba era una matriz de 3x5 o una lista de 15 elementos.

¿Estoy mejor recodificando las columnas de caracteres como numéricas para hacer el mejor uso de resume ()? ¿Es probable que sea más rápido / ordenado que para los bucles?
Re: Obtenga el recuento para agrupar (paneles) en el generador de gráficos para verificar que la visualización sea sensataResumir es el camino a seguir. No puede realizar recuentos para las columnas de caracteres, pero puede obtener los valores de agrupación de los que puede obtener los recuentos. Vea el guión a continuación
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Numeric Column
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, bygroup = by( :age ), counts = Count( :age ) );
Show( "Numeric Column", bygroup, counts );
// Character Column
Summarize( dt, bygroup = by( :sex ) );
counts = {};
For( i = 1, i <= N Items( bygroup ), i++,
Insert Into( counts, N Rows( dt << get rows where( :sex == bygroup[i] ) ) )
);
Show( "Character Column", bygroup, counts );