Ayuda extrayendo nombre de variable transformada sobre la marcha.Hola a todos,
Necesito ayuda con un problema aparentemente simple pero para el cual no puedo encontrar una solución. He escrito un código JSL para hacer algunos cálculos y lo primero que hace es abrir una ventana de diálogo de columnas donde se pueden elegir columnas de la tabla y colocarlas en diferentes roles (en mi caso, variables X e Y). Lo que debo hacer es obtener los nombres de estas columnas de la tabla para poder usarlas más adelante para mostrar los nombres de los ejes (usando las funciones Yname y Xname) en un cuadro de Gráficos. Todo está bien cuando las columnas de la tabla se usan directamente. Sin embargo, si hago una transformación sobre la marcha haciendo clic con el botón derecho en la variable antes de asignar un rol en la ventana del diálogo de columnas, entonces las cosas se complican. Normalmente, usaría algo como:
yn= as column(eval( cdw["yv"])) << Get Name;
donde cdw en el objeto regresa por la ventana de diálogo de columna. Sin embargo, en el caso de una variable transformada, producirá
yn = deleted object reference[];
Si analizo el problema, el evaluar (cdw [ "yv" ])) produciría una lista de un elemento con el siguiente aspecto:
{Transformar columna ("Log10 [ Nombre de la tabla colum ] ", Formula (Log10 (: Name (" Nombre de la tabla colum "))))}
¿Cómo puedo extraer de eso solo la porción? Log10 [ Nombre de la tabla colum ] ¿Así que puedo usarlo en una declaración de Yname o Xname en un cuadro de gráfico?
Muchas gracias por cualquier ayuda que pueda proporcionar.
Saludos, Yves
Re: Ayuda a extraer nombre de variable transformada sobre la marcha.Tiene razón, pensé que el [1] era porque había más de una variable seleccionada en ese rol. ¡Disculpas por no probar tu solución más a fondo antes de responder!
Muchas muchas gracias, Yves.
Re: Ayuda a extraer nombre de variable transformada sobre la marcha.Creo que debes estar haciendo algo diferente. Aquí está mi registro después de ejecutar el código que publiqué.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
cd=Column Dialog(
ex y = ColList( "Y", Min Col( 1 ), Max Col( 2 ), Data Type( "Numeric" ) ),
ex x = ColList( "X",
Max Col( 1 ),
Modeling Type( {"Continuous", "Multiple Response"} )
),
Line Up( 2,
Text Box( "Alpha" ), ex = EditNumber( .05 ),
Text Box( "Beta" ), ey = EditText( "xyz" )
),
HList( cb = Check Box( "check", 1 ) ),
HList( combo = Combo Box( "option1", "option2" ) ),
HList( rb = RadioButtons( "a", "b" ) )
);
show(cd["ex y"], arg(cd["ex y"][1], 1));
/*:
//cd["ex y"] = {Transform Column("Birth Year^3", Formula(:Birth Year ^ 3))};
//Arg(cd["ex y"][1], 1) = "Birth Year^3";Re: Ayuda a extraer nombre de variable transformada sobre la marcha.Gracias Jeff, pero tampoco parece funcionar (me siento un poco menos estúpido ahora que 2 expertos han ofrecido consejos y han llegado al mismo punto que yo). Nuevamente el arg () devolverá todo:
Transform Column("Age Group^3", Formula(:Age Group ^ 3))Me gustaría poder usar solo
Age Group^3
Yves
Re: Ayuda a extraer nombre de variable transformada sobre la marcha.los arg () La función te llevará allí.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
cd=Column Dialog(
ex y = ColList( "Y", Min Col( 1 ), Max Col( 2 ), Data Type( "Numeric" ) ),
ex x = ColList( "X",
Max Col( 1 ),
Modeling Type( {"Continuous", "Multiple Response"} )
),
Line Up( 2,
Text Box( "Alpha" ), ex = EditNumber( .05 ),
Text Box( "Beta" ), ey = EditText( "xyz" )
),
HList( cb = Check Box( "check", 1 ) ),
HList( combo = Combo Box( "option1", "option2" ) ),
HList( rb = RadioButtons( "a", "b" ) )
);
foo=arg(cd["ex y"][1], 1);Re: Ayuda a extraer nombre de variable transformada sobre la marcha.Gracias Jim por tu rápida respuesta, pero esto realmente no funcionará porque usará todo el asunto, es decir,
Transform Column("Age Group^3", Formula(:Age Group ^ 3)) como el nombre del eje. Esto es bastante engorroso en un gráfico. Así que estoy tratando de extraer sólo el
Age Group^3
parte como el nombre del eje.
Gracias de nuevo, Yves
Re: Ayuda a extraer nombre de variable transformada sobre la marcha.Tomado del índice de secuencias de comandos para el diálogo Col
Ayuda ==> Índice de secuencias de comandos ......... buscar en Col Diálogo
Aquí está el ejemplo de script
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
xx = Column Dialog(
ex y = ColList( "Y", Min Col( 1 ), Max Col( 2 ), Data Type( "Numeric" ) ),
ex x = ColList( "X",
Max Col( 1 ),
Modeling Type( {"Continuous", "Multiple Response"} )
),
Line Up( 2,
Text Box( "Alpha" ), ex = EditNumber( .05 ),
Text Box( "Beta" ), ey = EditText( "xyz" )
),
HList( cb = Check Box( "check", 1 ) ),
HList( combo = Combo Box( "option1", "option2" ) ),
HList( rb = RadioButtons( "a", "b" ) )
);
show( xx );
He añadido una referencia al cuadro de diálogo Col (). Si ejecuta esto y crea una variable de transformación en el cuadro de diálogo Col, se mostrará que una lista llamada "xx" contiene la información que necesita.
xx = {ex y = {Transform Column("Age Group^3", Formula(:Age Group ^ 3))}, ex x = {}, Text Box, ex = 0.05, Text Box, ey = "xyz", cb = 1, combo = 1, rb = 1, Button(1)};
Puede obtener esta información extrayendo de la lista ex y de la lista xx