Especificar columnas de tablas de datos independientes<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo la intención de escribir un script que haga coincidir los valores de una columna en la tabla de datos 1, con los valores coincidentes más cercanos de una columna en la tabla de datos 2. ¿Es posible escribir una plataforma JSL para permitir entradas de dos tablas de datos diferentes?Si no, ¿alguien conoce algún buen enfoque alternativo?
Re: Especificar columnas de tablas de datos independientesGracias Jim!
Re: Especificar columnas de tablas de datos independientesN Table() devuelve el recuento del número de tablas de datos abiertos.
Puedes recorrerlos obteniendo sus nombres.
Para(I=1, I<= N Tabla(),I++,
show(tabla de datos(I)<
);
Re: Especificar columnas de tablas de datos independientesGracias Jim.¿Conoce una función que devolverá una lista de tablas de datos abiertos?
Re: Especificar columnas de tablas de datos independientesNo hay ninguna restricción para completar 2 cuadros de lista de columnas de diferentes tablas de datos en la misma ventana de visualización.Si va a Ayuda==>Índice de secuencias de comandos y observa el tercer ejemplo del cuadro de visualización, Cuadro de lista de columnas(), verá un ejemplo que muestra las columnas de una tabla de datos y le permite seleccionar una columna.Este script de ejemplo se puede expandir fácilmente para que esté en la misma ventana de visualización duplicando el código, pero cambiando la referencia "dt" a su variable de referencia a su segunda tabla de datos.
Re: Especificar columnas de tablas de datos independientesHola Jim,
En mi guión final, me gustaría crear un plataforma que se puede agregar a un complemento, de modo que el usuario tendrá una interfaz para seleccionar columnas tanto de dt1 como de dt2. es posible?Si no, ¿conoces alguna solución?
// Ejemplo de entrada de plataforma.
Nombres predeterminados aquí ( 1 ) ;
dt = Tabla de datos actuales () ;
Nueva ventana ( "Fusionar por coincidencia más cercana" ,
<< Modal ,
Caja de texto ( "Seleccionar entrada" ) ,
Cuadro de lista H (
Caja de paneles ( "Seleccione columna dt1" , obtenerCols = Cuadro de lista de columnas ( dt , Todo ) ) , // Obtener columnas de dt1.
// Agregue algún script para obtener también columnas de dt2.
Cuadro de lista V (
Caja de paneles ( "columna dt1" ,
Cuadro de alineación ( norte col ( 2 ) ,
Caja de botones ( "Columna dt1" , Cols1 << Adjuntar ( obtenerCols << Ser seleccionado ) ) ,
Cols1 = Cuadro de lista de columnas ( N líneas ( 1 ) , Artículos máximos ( 1 ) , Numérico )
)
) ,
Caja de paneles ( "columna dt2" ,
Cuadro de alineación ( norte col ( 2 ) ,
Caja de botones ( "Columna dt2" , Cols2 << Adjuntar ( obtenerCols << Ser seleccionado ) ) ,
Cols2 = Cuadro de lista de columnas ( N líneas ( 1 ) , Artículos máximos ( 1 ) , Numérico )
)
)
)
)
) ;
Re: Especificar columnas de tablas de datos independientesHola Jim,
Gracias por el guión; Probablemente lo usaré en mi implementación.Agregué un par de líneas para tener en cuenta los casos en los que los valores en dt1 están fuera de los valores de dt2.
Nombres predeterminados aquí ( 1 ) ;
//Abre una tabla de datos de muestra
dt = Abierto ( "$SAMPLE_DATA/capacidad de semiconductores.jmp" ) ;
// Crea un par de tablas de datos para mostrar cómo realizar búsquedas
// a varias tablas
dt1 = dt << subconjunto ( filas seleccionadas ( 0 ) , columnas ( npn1 ) ) ;
dt2 = dt << subconjunto ( filas seleccionadas ( 0 ) , columnas ( npn2 ) ) ;
Cerca ( dt , guardar ) ;
// Ordena la tabla para encontrar los valores más cercanos
dt2 << clasificar ( por ( NPN2 ) , reemplazar mesa ( 1 ) ) ;
// Crea una columna en la primera tabla para guardar el número de fila
// de la segunda tabla más cercana a ella
dt1 << Nueva columna ( "Número de fila más cercano" ) ;
// Crea una columna que tenga los números de fila en la segunda
// tabla de datos, por lo que puede usarse para unirse con la primera tabla
dt2 << Nueva columna ( "Numero de fila" , valores ( 1 :: N filas ( dt2 ) ) ) ;
// Encuentra el valor de la segunda tabla que sea más cercano al
// valor de la primera tabla de datos
Para ( i = 1 , i <= N filas ( dt1 ) , i ++,
El seleccionado = dt2 << obtener filas donde ( dt2 : NPN2 > dt1 : NPN1 [ i ] ) ;
Si ( N filas ( El seleccionado ) == 0 ,
dt1 : Número de fila más cercano [ i ] = N filas ( dt2 ) , // Agregado para el caso: TheSelected está vacío
Si ( El seleccionado [ 1 ] > 1 ,
Si ( dt2 : NPN2 [ El seleccionado [ 1 ]] - dt1 : NPN1 [ i ] > dt1 : NPN1 [ i ] - dt2 : NPN2 [ El seleccionado [ 1 ] - 1 ] ,
dt1 : Número de fila más cercano [ i ] = El seleccionado [ 1 ] ,
dt1 : Número de fila más cercano [ i ] = El seleccionado [ 1 ] - 1
) ,
dt1 : Número de fila más cercano [ i ] = El seleccionado [ 1 ] ; // Agregado para el caso: TheSelected[1] == 1
)
) ;
) ;
// Une las tablas según el valor más cercano encontrado
unido = dt1 << Unirse (
Con ( dt2 ) ,
Nombre de la tabla de salida ( "Valores más cercanos unidos" ) ,
Por columnas coincidentes ( : Número de fila más cercano = : Numero de fila ) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 1 , 0 ) ,
Preservar el orden de la mesa principal ( 1 )
) ;
Re: Especificar columnas de tablas de datos independientesAquí hay un script de muestra que demuestra una de las formas en que puede hacer lo que está buscando:
Nombres predeterminados aquí ( 1 );
//Abre una tabla de datos de muestra
dt = Abierto ( "$SAMPLE_DATA/capacidad de semiconductores.jmp" );
// Crea un par de tablas de datos para mostrar cómo realizar búsquedas
// a varias tablas
dt1 = dt << subconjunto (filas seleccionadas( 0 ), columnas (npn1));
dt2 = dt<< subconjunto (filas seleccionadas( 0 ), columnas (npn2));
Cerca ( dt, nosave );
// Ordena la tabla para encontrar los valores más cercanos
dt2 << clasificar (por (NPN2), reemplazar la tabla ( 1 ) );
// Crea una columna en la primera tabla para guardar el número de fila
// de la segunda tabla más cercana a ella
dt1 << Nueva columna ( "Número de fila más cercano" );
// Crea una columna que tenga los números de fila en la segunda
// tabla de datos, por lo que puede usarse para unirse con la primera tabla
dt2 << Nueva columna ( "Numero de fila" , valores( 1 :: N filas ( dt2 ) ) );
// Encuentra el valor de la segunda tabla que sea más cercano al
// valor de la primera tabla de datos
Para (yo = 1 , yo <= N filas (dt1), i++,
Los seleccionados = dt2 << obtener filas donde ( dt2:NPN2 > dt1:NPN1 );
Si ( El seleccionado[ 1 ] > 1 ,
Si ( dt2:NPN2[Elseleccionado[ 1 ]] - dt1:NPN1 > dt1:NPN1 - dt2:NPN2[Elseleccionado[ 1 ] - 1 ],
dt1: Número de fila más cercano = Estos seleccionados[ 1 ],
dt1: Número de fila más cercano = Estos seleccionados[ 1 ] - 1
)
);
);
// Une las tablas según el valor más cercano encontrado
dtunido = dt1 << Unirse (
Con( dt52 ),Nombre de la tabla de salida( "Valores más cercanos unidos" ),
Al hacer coincidir columnas (: Número de fila más cercano =: Número de fila),
Eliminar múltiples ( 0 , 0 ),
Incluir no coincidencias ( 1 , 0 ),
Preservar el orden de la mesa principal( 1 )
);