Jmp : selecciona donde<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola, intentaría generar una nueva tabla seleccionando dónde en un script y fusionando la tabla de subconjunto con otra
Logro generar un script exitoso, excepto cuando Seleccionar dónde no encuentra la fila con los criterios.
¿Sabe cómo puedo omitir la parte de la tabla de unión en mi secuencia de comandos si selecciono donde no devuelve nada?
Saludos
sebastien
Re: Jmp: selecciona dondeDos ejemplos más usando Si ( ! esta vacio y mi preferido tratar ( ejemplos de métodos:
Nombres predeterminados hasta aquí ( 1 ) ;
// abre la tabla de datos y haz algunos cambios
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
dt << escoger un nombre ( "mesa" ) <<
Nueva columna ( "Peso/Altura" , fórmula ( : peso / : altura ) ) ;
// abre otra tabla de datos
dt2 = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
dt2 << Selecciona donde ( : sexo == "Q" ) ;
dt3 = dt2 << Subconjunto (
filas seleccionadas ( 1 ) ,
Solo columnas seleccionadas ( 0 )
) ;
Si ( ! esta vacio ( dt3 ) , //si las filas seleccionadas == 0 dt3 es una variable vacía
dt4 = dt << Unirse (
Con ( dt3 ) ,
Por columnas coincidentes ( : nombre = : nombre ) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 )) , // no hay registro de error de impresión de tabla
imprimir ( "Tabla de subconjunto vacía" )
) ;
tratar ( dt4 = dt << Unirse (
Con ( dt3 ) ,
Por columnas coincidentes ( : nombre = : nombre ) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 ))
, // captura de expresión
Imprimir ( "Error al unirse" )) ;
Re: Jmp: selecciona dondehola seb38.cremer ,
EM dio la respuesta correcta. sin embargo, si no fue lo suficientemente explícito tu lo siguiente:
Nombres predeterminados hasta aquí ( 1 ) ;
// abre la tabla de datos y haz algunos cambios
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) <<
escoger un nombre ( "mesa" ) <<
Nueva columna ( "Peso/Altura" , fórmula ( : peso / : altura ) ) ;
// abre otra tabla de datos
dt2 = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
// en lugar de usar select use obtener filas donde - es más robusto
elegido = dt2 << obtener filas donde ( : años == 12 ) ;
// ver si alguno fue elegido. en caso afirmativo, subconjunto y únase
Si ( Fila N ( elegido ) > 0 ,
dt3 = dt2 << subconjunto (
filas ( elegido ) ,
columnas seleccionadas ( 0 ) // trae todas las columnas
) ;
// ahora únete
dt3 << Unirse (
Con ( tabla de datos ( "mesa" ) ) ,
Por columnas coincidentes ( : nombre = : nombre ) ,
Soltar múltiplos ( 0 , 0 ) ,
Nombre ( "Incluir no coincidencias" )( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 )
) ;
) ;
Re: Jmp: selecciona dondeProbablemente hay varias maneras de hacer esto. He aquí una idea que debería funcionar si Seleccione Dónde() se han aplicado:
Si ( Fila N ( dt << Obtener filas donde ( Seleccionado ())) > 0 ,
dtsub << unirse ( ... )
) ;
Otra idea sin Seleccione Dónde() eso hace un subconjunto solo si alguna fila coincide con los criterios (comparar con "F" en lugar de "Q"):
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
r = dt << obtener filas donde ( : sexo == "Q" ) ;
Si ( Fila N ( r ) ,
( dt << subconjunto ( filas ( r ))) << unirse ( Con ( dt ))
) ;