Selezionare le colonne contenute nell'elenco fornito dall'utente<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di capire come utilizzare un elenco specificato dall'utente per selezionare quelle colonne di dati contenute nell'elenco.L'elenco fornito dall'utente può contenere più o meno nomi di quelli presenti nella tabella dei dati.Ad esempio, ho provato quanto segue ma non riesco a farlo funzionare.Tutte le idee sarebbero apprezzate.Grazie
dt = open("$SAMPLE_DATA/Big Class.jmp");
// Ottieni l'elenco dei nomi delle colonne di dati
col_list = dt << Ottieni i nomi delle colonne ( String );
// Nomi di colonna specificati dall'utente
cc = { sesso, peso, test, nuovo, vecchio };
for( i=1, i<=ncol( cc ), i++,
if(contiene( elenco_col, cc ),
Colonna ( dt, col_list ) << Imposta selezionati ( 1 )
)
);
Re: Selezionare le colonne contenute nell'elenco fornito dall'utenteSM,
Grazie per il tuo aiuto.Ora capisco che il mio pensiero su quale colonna ripercorrere era ciò che mi stava causando parte del mio precedente dolore.Ho pensato che avrei ripetuto e selezionato le colonne elencate nell'elenco delle variabili della tabella dati, non nell'elenco specificato dall'utente.Imparare sempre qualcosa di nuovo qui.Grazie.
Re: Selezionare le colonne contenute nell'elenco fornito dall'utenteNon stavo esaminando i dettagli dell'output. Stai eseguendo il loop su cc, quindi dovresti fare riferimento a cc piuttosto che col_list per ottenere il risultato desiderato.
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
// Ottieni l'elenco dei nomi delle colonne di dati
col_list = dt << Ottieni nomi di colonna ( corda ) ;
// Nomi di colonna specificati dall'utente
cc = { sesso , peso , test , nuovo , vecchio } ;
Per ( io = 1 , io <= N articoli ( cc ) , io ++,
Se ( Contiene ( col_list , Car ( cc [ io ] ) ) ,
Colonna ( dt , Car ( cc [ io ] ) ) << Imposta selezionato ( 1 )
)
) ;
//Anche questo funziona
Per ( io = 1 , io <= N articoli ( cc ) , io ++,
Se ( Contiene ( col_list , Car ( cc [ io ] ) ) ,
: ( cc [ io ]) << Imposta selezionato ( 1 )
)
) ;
Re: Selezionare le colonne contenute nell'elenco fornito dall'utenteCiao MS,
Grazie per i suggerimenti.Sebbene il codice fornito venga eseguito, non seleziona solo le colonne elencate nell'elenco specificato dall'utente.Ad esempio, il codice sopra elencato seleziona le prime due colonne (nome e sesso) anche se il sesso non è nell'elenco specificato dall'utente.Stavo pensando che questo costrutto di elenco stava attraversando e trovando quei numeri di colonna in col_list che corrispondono a quelli situati in cc e quindi selezionandoli.Sembra che in realtà selezioni le colonne in base alla posizione in cc, non al nome.È possibile selezionare le colonne in base ai nomi corrispondenti, non alla posizione?
Re: Selezionare le colonne contenute nell'elenco fornito dall'utenteQuasi lì. Usa N Items() invece di ncol() per le liste. E per abbinare due elementi entrambi devono avere lo stesso tipo di dati. Quindi, fornisci l'elenco fornito dall'utente come un elenco di stringhe o usa Char () come di seguito.
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
// Ottieni l'elenco dei nomi delle colonne di dati
col_list = dt << Ottieni nomi di colonna ( corda ) ;
// Nomi di colonna specificati dall'utente
cc = { sesso , peso , test , nuovo , vecchio } ;
Per ( io = 1 , io <= N articoli ( cc ) , io ++,
Se ( Contiene ( col_list , Car ( cc [ io ] ) ) ,
Colonna ( dt , col_list [ io ] ) << Imposta selezionato ( 1 )
)
) ;