Specificare colonne da tabelle dati separate<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Intendo scrivere uno script che abbinerà i valori di una colonna nella tabella dati 1, con i valori corrispondenti più vicini da una colonna nella tabella dati 2. È possibile scrivere la piattaforma JSL per consentire input da due diverse tabelle dati?In caso contrario, qualcuno conosce un buon approccio alternativo?
Ri: Specificare colonne da tabelle dati separateGrazie Jim!
Ri: Specificare colonne da tabelle dati separateN Table() restituisce il conteggio del numero di tabelle di dati aperte.
Puoi scorrerli in sequenza ottenendo i loro nomi
For(I=1, I<= N Tabella(),I++,
mostra(tabella dati(I)<
);
Ri: Specificare colonne da tabelle dati separateGrazie Jim.Conosci una funzione che restituirà un elenco di tabelle di dati aperti?
Ri: Specificare colonne da tabelle dati separateNon esiste alcuna restrizione nel popolare 2 Col List Box() da diverse tabelle dati nella stessa finestra di visualizzazione.Se vai su Aiuto==>Indice di script e guardi il terzo esempio per la casella di visualizzazione, Col List Box(), vedrai un esempio che visualizza le colonne da una tabella di dati e ti consente di selezionare una colonna.Questo script di esempio può essere facilmente espanso per essere nella stessa finestra di visualizzazione duplicando il codice, ma modificando il riferimento "dt" alla variabile di riferimento nella seconda tabella dati.
Ri: Specificare colonne da tabelle dati separateCiao Jim,
Nella mia sceneggiatura finale, vorrei creare un file piattaforma che può essere aggiunta a un componente aggiuntivo, in modo che l'utente disponga di un'interfaccia per selezionare colonne sia da dt1 che da dt2. È possibile?In caso contrario, conosci una soluzione alternativa?
// Esempio di input della piattaforma.
Nomi predefiniti qui ( 1 ) ;
dt = Tabella dati corrente () ;
Nuova finestra ( "Unisci per corrispondenza più vicina" ,
<< Modale ,
Casella di testo ( "Seleziona ingresso" ) ,
Casella di riepilogo H (
Scatola del pannello ( "Seleziona colonna dt1" , getCols = Casella di riepilogo colonne ( dt , Tutto ) ) , // Ottieni colonne da dt1.
// Aggiungi qualche script per ottenere anche le colonne da dt2.
Casella di riepilogo V (
Scatola del pannello ( "colonna dt1" ,
Casella di formazione ( N col ( 2 ) ,
Casella dei pulsanti ( "Colonna dt1" , Cols1 << Aggiungere ( getCols << Fatti selezionare ) ) ,
Cols1 = Casella di riepilogo colonne ( N linee ( 1 ) , Articoli massimi ( 1 ) , Numerico )
)
) ,
Scatola del pannello ( "colonna dt2" ,
Casella di formazione ( N col ( 2 ) ,
Casella dei pulsanti ( "Colonna dt2" , Cols2 << Aggiungere ( getCols << Fatti selezionare ) ) ,
Cols2 = Casella di riepilogo colonne ( N linee ( 1 ) , Articoli massimi ( 1 ) , Numerico )
)
)
)
)
) ;
Ri: Specificare colonne da tabelle dati separateCiao Jim,
Grazie per la sceneggiatura; Probabilmente lo userò nella mia implementazione.Ho aggiunto un paio di righe per tenere conto dei casi in cui i valori in dt1 non rientrano nei valori di dt2.
Nomi predefiniti qui ( 1 ) ;
// Apre una tabella di dati di esempio
dt = Aprire ( "$SAMPLE_DATA/capacità semiconduttore.jmp" ) ;
// Crea un paio di tabelle di dati per mostrare come eseguire le ricerche
// su più tabelle
dt1 = dt << sottoinsieme ( righe selezionate ( 0 ) , colonne ( npn1 ) ) ;
dt2 = dt << sottoinsieme ( righe selezionate ( 0 ) , colonne ( npn2 ) ) ;
Vicino ( dt , nosalva ) ;
// Ordina la tabella per trovare i valori più vicini
dt2 << ordinare ( di ( NPN2 ) , sostituire la tabella ( 1 ) ) ;
// Crea una colonna nella prima tabella per salvare il numero di riga
// dalla seconda tabella più vicina ad essa
dt1 << Nuova colonna ( "Numero di riga più vicino" ) ;
// Crea una colonna che abbia i numeri di riga nella seconda
// tabella dati, in modo che possa essere utilizzata per unirsi alla prima tabella
dt2 << Nuova colonna ( "Numero di riga" , valori ( 1 :: N righe ( dt2 ) ) ) ;
// Trova il valore dalla seconda tabella che è il più vicino a
// valore dalla prima tabella dati
Per ( io = 1 , io <= N righe ( dt1 ) , io ++,
Il Selezionato = dt2 << ottieni righe dove ( dt2 : NPN2 > dt1 : NPN1 [ io ] ) ;
Se ( N righe ( Il Selezionato ) == 0 ,
dt1 : Numero di riga più vicino [ io ] = N righe ( dt2 ) , // Aggiunto per caso: TheSelected è vuoto
Se ( Il Selezionato [ 1 ] > 1 ,
Se ( dt2 : NPN2 [ Il selezionato [ 1 ]] - dt1 : NPN1 [ io ] > dt1 : NPN1 [ io ] - dt2 : NPN2 [ Il selezionato [ 1 ] - 1 ] ,
dt1 : Numero di riga più vicino [ io ] = Il selezionato [ 1 ] ,
dt1 : Numero di riga più vicino [ io ] = Il selezionato [ 1 ] - 1
) ,
dt1 : Numero di riga più vicino [ io ] = Il selezionato [ 1 ] ; // Aggiunto per caso: TheSelected[1] == 1
)
) ;
) ;
// Unisci le tabelle in base al valore più vicino trovato
dtjoined = dt1 << Giuntura (
Con ( dt2 ) ,
Nome della tabella di output ( "I valori più vicini uniti" ) ,
Corrispondendo alle colonne ( : Numero di riga più vicino = : Numero di riga ) ,
Rilascia multipli ( 0 , 0 ) ,
Includi non corrispondenze ( 1 , 0 ) ,
Preserva l'ordine della tabella principale ( 1 )
) ;
Ri: Specificare colonne da tabelle dati separateEcco uno script di esempio che dimostra uno dei modi in cui puoi fare ciò che stai cercando:
Nomi predefiniti qui ( 1 );
// Apre una tabella di dati di esempio
dt = Aprire ( "$SAMPLE_DATA/capacità semiconduttore.jmp" );
// Crea un paio di tabelle di dati per mostrare come eseguire le ricerche
// su più tabelle
dt1 = dt<< sottoinsieme (righe selezionate( 0 ), colonne( npn1 ) );
dt2 = dt<< sottoinsieme (righe selezionate( 0 ), colonne( npn2 ) );
Vicino (dt, nosalvare);
// Ordina la tabella per trovare i valori più vicini
dt2 << ordinare (da( NPN2 ), sostituisci tabella( 1 ) );
// Crea una colonna nella prima tabella per salvare il numero di riga
// dalla seconda tabella più vicina ad essa
dt1 << Nuova colonna ( "Numero di riga più vicino" );
// Crea una colonna che abbia i numeri di riga nella seconda
// tabella dati, in modo che possa essere utilizzata per unirsi alla prima tabella
dt2 << Nuova colonna ( "Numero di riga" , valori( 1 :: N righe (dt2)));
// Trova il valore dalla seconda tabella che è il più vicino a
// valore dalla prima tabella dati
Per ( io = 1 , io <= N righe ( dt1 ), i++,
IlSelezionato = dt2 << ottieni righe dove ( dt2:NPN2 > dt1:NPN1 );
Se ( IlSelezionato[ 1 ] > 1 ,
Se ( dt2:NPN2[Ilselezionato[ 1 ]] - dt1:NPN1 > dt1:NPN1 - dt2:NPN2[Ilselezionato[ 1 ] - 1 ],
dt1:Numero di riga più vicino = Ilselezionato[ 1 ],
dt1:Numero di riga più vicino = Ilselezionato[ 1 ] - 1
)
);
);
// Unisci le tabelle in base al valore più vicino trovato
dtunito = dt1 << Giuntura (
Con( dt52 ),Nome tabella di output( "I valori più vicini uniti" ),
Per colonne corrispondenti ( :Numero riga più vicino = :Numero riga ),
Rilascia multipli ( 0 , 0 ),
Includi non corrispondenze( 1 , 0 ),
Conserva l'ordine della tabella principale( 1 )
);