Hola a todos,
Me doy cuenta de que la plataforma de distribución no parece aceptar referencias de columnas de la misma manera que lo hace Graph Builder, por ejemplo.
Tengo un código en el que hago referencia a diferentes columnas dentro de una tabla de datos usando el formato Columna (dtname, número). Por ejemplo, este es un poco de código donde lo hago con GB y funciona bien:
Graph Builder(
Size( 500, 350 ),
Show Control Panel( 0 ),
Variables(
X( Column( dt_results, NNxcol ) ),
Y( Column( dt_results, NNYCol + N Items( NNXList ) ) ),
Y( Column( dt_results, NNYCol + 1 + N Items( NNXlist ) ), Position( 1 ) ),
Y( Column( dt_results, NNYCol + 2 + N Items( NNXList ) ) )
),
Elements(
Position( 1, 1 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 9 ) )
),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ), Smoother( X, Y, Legend( 11 ) ) ),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( NNYList[NNYCol] || " Stats vs. " || NNXList[NNxcol] )}
),
Dispatch( {}, "Y title", TextEditBox, {Set Text( NNYList[NNYCol] || " Train & Valid" )} )
)
)
Sin embargo, cuando intento hacer algo similar en la plataforma de Distribución, no sucede nada, y creo que es porque a la llamada de Distribución Continua() no parece gustarle hacer referencia a una columna de esta manera. Parece que le gusta hacer referencia a la columna como Columna (nombre de columna).
Distribution(
Continuous Distribution( Column( dt_results, NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Quiero usar variables cuando llamo a la plataforma porque es más flexible en el código que codificar en el nombre de la columna en sí. ¿Alguna idea de por qué la plataforma de distribución se comporta de manera diferente o cómo hacer referencia correctamente a la columna para obtener el resultado deseado?
Se agradece cualquier idea/comentario.
¡Gracias!,
DS
Puede simplemente enviar un mensaje a su tabla de datos y eliminar la referencia de la tabla en la función Column().En cuanto a por qué no le gusta la sintaxis del script que funciona con Graph Builder, no lo sé.
dt_results << Distribution(
Continuous Distribution( Column( NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Puedes usar una sintaxis divertida y confusa como esta.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
dist = dt << Distribution(
Continuous Distribution(Column(Column(dt, col1)), Quantiles(0)),
Continuous Distribution(Column(Column(dt, col2)), Quantiles(0))
);
o esto
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Eval(EvalExpr(
dist = dt << Distribution(
Continuous Distribution(Column(Eval(col1)), Quantiles(0)),
Continuous Distribution(Column(Eval(col2)), Quantiles(0))
);
));
Editar: Eval(EvalExpr()) no es necesario en el script anterior. Lo dejé allí por accidente cuando probé diferentes opciones (estaba jugando con Name Expr(AsColumn())).
O solo uno de estos:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Distribution(Continuous Distribution(Column(Eval(col1))));
colList={col1,col2};
Distribution(column(EvalList(colList)));
Más detalles pueden ser encontrados aquí:
https://www.pega-analytics.co.uk/blog/handling-lists-of-columns/ (gracias @Ressel
y aquí:
https://community.jmp.com/t5/Discussions/Updating-column-list-box-using-list-stored-in-variable-not/mp/687314/highlight/true#M87301
La confusión surge porque (bien conocido) Columna se utiliza como nombre para un argumento con nombre en Distribución Continua. Muchos usuarios de Jmp asumirán que fue el Columna() funcionar y utilizarlo en consecuencia.
Lo mismo para la tabla de datos() en el cuadro de lista Col: La actualización del cuadro de lista de columnas usando la lista almacenada en la variable no funciona como se esperaba. ¿Es así como debe ser?
Hola a todos,
Gracias por algunos comentarios rápidos y ayuda en esto. Terminé eligiendo una mezcla de @mmarchandTSI y @jthi La segunda sugerencia. Desafortunadamente, la sugerencia de @mmarchandTSI no terminó funcionando por sí solo, a la plataforma todavía no le gustaban las variables para el número de columna dentro de la referencia Column(). Sin embargo, si luego hice una Eval() en las variables numéricas dentro de la referencia Column(), entonces funcionó bien. Entonces, usando Column(Eval()), como @jthi y @hogi lo hizo, terminó funcionando según lo previsto.
¡Gracias por las excelentes sugerencias!,
DS