Funciones de tabla: varias tablasTengo dos problemas con Supongo que JMP asigna tablas y las usa más tarde. Los pasos 2 y 3 estarán en scripts separados y se llamarán usando el Incluir() función.
// Paso 1: extraer datos del servidor y asignarlos a dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );</QUERY></SERVER>
// Paso 2: crea una nueva tabla con condiciones
dt_testdata_ss_tx = dt_testdata_ss
<< select where ( (:col_1 == 24) & (:col_2 == 1))
<< subset( output table name("dt_testdata_ss_tx"));
// Paso 2a: usa dt_testdata_ss_tx en graphplot.jsl
// Paso 2b: usa dt_testdata_ss_tx en Distribution.jsl
// Paso 3: crea una nueva tabla con condiciones
dt_testdata_ss_rx = dt_testdata_ss
<< select where ((:col_1 == 16) & (:col_2== 3 ))
<< subset( output table name( "dt_testdata_ss_rx"));
// Paso 3a: usa dt_testdata_ss_rx en graphplot.jsl
// Paso 3b: usa dt_testdata_ss_rx en Distribution.jsl
Ahora tengo 3 tablas abiertas al mismo tiempo y no puedo acceder a la tabla correcta en el script que me proporcionaste. Incluso llegué tan lejos como
dt_testdata_ss
dt_testdata_ss_tx
dt_testdata_ss_rx
Cuando ejecuto su script, aparece el siguiente error cuando lo ejecuto cambiando dt a dt_testdata_tx o dt_testdata_rx :
ERROR: argumento no válido en el acceso o evaluación de 'Cerrar', Cerrar *###*/(dtSum, nosave)
Solo puedo suponer que dt no se asigna a dt_testdata_tx o dt_testdata_rx porque la tabla no se ejecuta. No puedo entender cómo llamar a una determinada tabla para manipularla si las 3 están abiertas. ¿Sugerencias?
gracias de antemano
dt = current data table(); // removed this line
dtsum = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
dtFinal = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
Automatización y secuencias de comandosAcceso a los datosRe: Funciones de tabla - Varias tablasLos nombres predeterminados aquí (1) hacen que todas las variables sean locales.Si desea que todas las variables sean globales, omita esta línea.
De lo contrario, podría pasarlos utilizando variables globales.Una variable global en JSL comienza con dos dos puntos "::".Agrego g_ para indicar que se trata de una variable global.
::g_dt_testdata_ss_tx = foo bar ...
Re: Funciones de tabla - Varias tablasEsto funciona muy bien gracias.. De hecho, encontré un pequeño problema con mi script que no me permitía cambiar las tablas.
Ahora mi problema es que tengo 4 tablas abiertas y se usarán individualmente en un script Include(). No puedo entender cómo seleccionar la tabla de datos en el nuevo script. Parece que las variables no se pasan al nuevo script.
Si tengo 4 nombres de tablas, haga esto: Nombres predeterminados aquí (1); ¿almacenarlo solo en las variables de la tabla de datos en ese script que las originó? He probado los nombres predeterminados aquí (0); que pensé que lo había asignado globalmente...
¿Alguna sugerencia?
Gracias
Re: Funciones de tabla - Varias tablasCreo que tenía que ser cómo se asignaban las tablas/variables. Son las cosas simples las que causan la mayoría de los problemas.
Un problema de cálculo que está mal debido a un simple error matemático. Muchas gracias por la explicación..
Re: Funciones de tabla - Varias tablasEstás bastante cerca.Para el comando de subconjunto no es necesario nombrar la tabla.Simplemente asignarlo a una variable es suficiente.Pero debes especificar cómo quieres que funcione el subconjunto. filas seleccionadas(1), columnas seleccionadas(0) .
No estoy seguro de por qué cerrar(dtsum,nosave) no funciona, siempre que haya asignado dtsum = (una de las variables de la tabla).
Acerca de dt = tabla de datos actual() - No usaría esto porque tienes tres tablas abiertas y es posible que no quede claro cuál es la tabla actual.Es mejor simplemente usar las variables de la tabla existente.
// Step 1: Pull in data from server and assign it to dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );
// Step 2: creates new table with conditions
dt_testdata_ss_tx = dt_testdata_ss << select where ( (:col_1 == 24) & (:col_2 == 1 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 2a: uses dt_testdata_ss_tx in graphplot.jsl
// Step 2b: uses dt_testdata_ss_tx in distribution.jsl
// Step 3: creates new table with conditions
dt_testdata_ss << clear row states; // Remove prior selec
dt_testdata_ss_rx = dt_testdata_ss << select where ( (:col_1 == 16) & (:col_2 == 3 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 3a: uses dt_testdata_ss_rx in graphplot.jsl
// Step 3b: uses dt_testdata_ss_rx in distribution.jsl</QUERY></SERVER>
Re: Funciones de tabla - Varias tablasSi estoy interpretando correctamente su problema, creo que no comprende cómo funcionan las variables que apuntan a las tablas de datos y cómo usarlas.He elaborado un script muy simple que crea 3 tablas de datos diferentes.Luego continúa y produce un análisis de cada una de las diferentes tablas de datos, en un orden diferente al orden en que fueron creadas.Utilicé las variables de puntero de la tabla de datos para lograr esto.Luego también incluí una sección de comentarios que ilustra cómo lograr este mismo orden de salida si elige restablecer la tabla de datos actual, antes de ejecutar el análisis.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << select where( :sex == "F" );
dtFemale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtMale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dtFemale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dtMale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
// Or
/*current data table( dtFemale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dtMale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dt );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);*/