filtro de datos para bucleHola,
Soy bastante nuevo en las secuencias de comandos. Entiendo el bucle for pero necesito un poco de ayuda aquí.
No puedo encontrar el ejemplo del bucle for para un filtro de datos en la guía de secuencias de comandos. Si alguien pudiera ayudarme con la sintaxis, sería genial.
Lo que estoy tratando de hacer es tener un mapa de árbol y necesito construir un bucle 'for' con la tabla de filtro de datos para guardar los resultados del gráfico como archivo .png automáticamente.
Adjunto figura. Por ejemplo, condición 1: oblea 11, eligiendo todos los trimsets Vpp para 25C y Fórmula NO (1 gráfico)
condición 2: oblea 12, eligiendo todos los ajustes Vpp para 85C (0,11111) y Fórmula NO (1 gráfico)
condición 3: trazar cada valor de ajuste para todos para la oblea 11 (9 gráficos) y la oblea 12 con SÍ (2 gráficos)
Puedo hacerlo si lo hago uno por uno en un código, pero no juntos.
Gracias
Re: filtro de datos para bucleGracias @David_Burnham , @Craige_Hales Craige y @txnelson
¡Ustedes molan!
Re: filtro de datos para bucle¡Lindo!Re: filtro de datos para bucleEl ejemplo que doy a continuación contiene código que omitirá combinaciones para las que no hay filas.
http://www.pega-analytics.co.uk/blog/scripting-data-filters/
Re: filtro de datos para bucleEntiendo lo que está pasando. Gracias por la muy buena explicación Craige.
Creo que si la condición no encuentra ninguna fila asociada con la condición, se rompe y se detiene.
"Esta cláusula Dónde para la tabla de datos 'Tabla final' no generó filas: Oblea == "12" y Fórmula == Vacío()"
En cambio, ¿puede proceder de modo que pueda seguir trazando con el bucle?
Re: filtro de datos para bucley en el código de ejemplo, gb es un plataforma objeto. el informe () solicita al objeto de la plataforma el DisplayBox que contiene el informe visible de la plataforma. La plataforma desconoce que hay más DisplayBoxes a su alrededor. Tienes que usar el método <Re: filtro de datos para bucle
bien. o gb nunca se configuró, o gb ya está cerrado.
Puedes usar
show(type(gb));
showproperties(gb);
en su script para obtener información sobre el objeto. Deberías ver algo como esto en el registro:
Type(gb) = "Scriptable";
Show Control Panel [Boolean] [Default On] (Displays or hides the control panel.)
Show Legend [Boolean] [Default On] (Displays or hides the legend to the right of the graph.)
Legend Position [Enum] {Right, Bottom, Inside Left, Inside Right}
Legend Settings [Action](Opens a dialog to modify the properties of the legend.)
Continuous Color Theme [Action](Se .... < a lot more follows>
En JMP, un objeto "programable" es un objeto como un Caja de presentación o un plataforma (o muchas otras posibilidades) que tiene métodos. Un DisplayBox tiene un método llamado padre que se usa con el operador << para obtener el cuadro principal de DisplayBox. La función ShowProperties enumera todos los métodos que DisplayBox conoce. Puede verlos en el índice de secuencias de comandos (en el menú de ayuda) en una forma más fácil de leer.
Cuando su secuencia de comandos dice "esperando un objeto programable ..." significa que la variable gb no contiene un objeto programable.
Re: filtro de datos para buclePor su comentario, creo que no ha entendido bien el guión de Craig que publicó.En su código, nunca hay más de 1 instancia del generador de gráficos abierta a la vez.El puntero al generador de gráficos, "gb", apunta a la ejecución actual del generador de gráficos.Crea un objeto de imagen de la salida de Graph Builder y lo guarda en un archivo.Luego CIERRA el objeto generador de gráficos (gb<
Si su código genera varios generadores de gráficos y cada uno usa "gb" como identificador que apunta a la instancia del generador de gráficos, "gb" solo apunta a la última instancia del generador de gráficos.
Re: filtro de datos para bucleHola Craige,
Lo implementé y comencé a ampliar los bucles for.
Recibí este error, Enviar espera objeto programable {630} en el acceso o evaluación de 'Enviar', Informe (gb) << /*###*/parent/*###*/... ¿Es porque hay demasiadas ventanas abiertas y JSL no se da cuenta a qué gb me refiero?Re: filtro de datos para bucleGracias CraigeRe: filtro de datos para bucledt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
Parece que es posible que necesites tomar el cuadro de visualización "abuelo" para el generador de gráficos; el padre)<
screen capture of large icons of graphs saved by scriptscreen capture of large icons of graphs saved by scriptcaptura de pantalla de iconos grandes de gráficos guardados por script
Re: filtro de datos para bucleLo es, pero el constructor de gráficos también acepta cláusulas Where.
Mejor,
METRO
Re: filtro de datos para bucleCreo que ese ejemplo fue para una distribución ajustada y por x. Estoy intentando hacerlo para un mapa de árbol en el generador de gráficos. Lo intentaré. Gracias M_Anderson
Re: filtro de datos para buclePodrías intentarlo @Craige_Hales respuesta en esta pregunta- enlace . En lugar de intentar trabajar con el filtro de datos local, agregar una cláusula Where a la llamada de su plataforma es probablemente una forma más elegante de hacer lo que busca.