Eliminazione di colonne che non sono presenti in un elencoCiao ragazzi,
Ho un set di colonne che voglio conservare e poi eliminare tutto tranne questo set.
Le colonne che voglio eliminare sono numerose.
Esiste un modo semplice per farlo utilizzando uno script?
Grazie.Re: Eliminazione di colonne non presenti in un elencoGrazie! È possibile creare sottoinsiemi di colonne che corrispondono ai miei criteri?
Mi interessa selezionare solo le colonne contenenti parole chiave. E non solo i nomi completi delle colonne (dato che ho molti dati).Re: Eliminazione di colonne non presenti in un elencoCiao Dave, apprezzo tutto l'aiuto. Bel blog, comunque! Ho un set di dati molto ampio composto da più di 8000 colonne e alcune colonne devono essere mantenute, altre no. Ho finito per usare "subset" sulle prime colonne che volevo mantenere. Dopodiché eseguo un ciclo sul resto della tabella per mantenere le colonne che corrispondono alle mie parole chiave come "_M". Quindi, infine, unisco il subset e la tabella che avevo mantenuto con i nomi delle colonne corrispondenti ai miei criteri. Ora funziona correttamente. Tuttavia, provo di nuovo a usare "list" nel codice seguente, ma sembra che non funzioni. L'uso di "of list" non è consentito in questo caso? dt = Current Data Table(); // seleziona la tabella dati dt << Set Name( "Raw_Data" ); dt << Subset( Columns( 1 :: 30 ), Rows( all ), Output Table( "Subset" ) ); // mantieni i nomi delle colonne principali dt << Revert(); // Mantieni le colonne vt colList = Data Table( "Raw_Data" ) << Get Column Names( String ); For( i = N Cols( dt ), i >= 1, i--, If( !Contains( colList[i], "_M" ), //Mantieni solo le colonne con "_M"" nel nome dt << Elimina Colonna( Colonna( colList[i] ) ) ) );Re: Eliminazione di colonne non presenti in un elencoScusa, forse ho capito male. Il codice rimuove gli elementi dall'elenco, non dalla tabella. Tuttavia, l'elenco aggiornato può essere utilizzato con un comando Subset per generare una tabella di sottoinsiemi contenente solo le colonne di tuo interesse.
Maggiori informazioni qui: http://www.pega-analytics.co.uk/blog/scripting-table-subsets/
Re: Eliminazione di colonne non presenti in un elenco"Ci sono un milione di modi per fare le cose..." Talking Heads, "What A Day That Was", 1984
Se il numero di colonne da eliminare è davvero elevato, potrebbe essere più efficiente creare un sottoinsieme della tabella con tutte le righe, mantenendo solo le colonne presenti nell'elenco. Questo potrebbe evitare molte eliminazioni iterative.
Tuttavia, la tua candidatura potrebbe non essere così semplice.
Oggetto: Eliminazione delle colonne non presenti in un elencoCiao Dave, apprezzo la tua rapida risposta alla mia domanda. Ho usato il tuo codice di esempio, ma sembra che le colonne della mia lista appaiano ancora nella mia tabella. C'è qualcosa che mi sfugge? dt = Data Table( "temp" ); all = dt << Get Column Names( string ); vt = {"lot_id", "wf_id", "die_x"}; For( i = 1, i <= N Items( vt ), i++, pos = Contains( all, vt[i] ); If( pos > 0, Remove From( all, pos ) ); );Re: Eliminazione di colonne che non sono presenti in un elencoLeggermente diverso ma con la stessa idea, il codice seguente elimina le colonne presenti in un elenco. Nello specifico, si ha un elenco di colonne ( Tutto ) e gli elementi vengono rimossi se sono contenuti nell'elenco escl. .
all = dt << Get Column Names(string);
// assume excl is a list of column names that i want to remove
For (i=1,i<=NItems(excl),i++,
pos = Contains(all,excl[i]);
If (pos>0,
RemoveFrom(all,pos)
)
);
Re: Eliminazione di colonne che non sono presenti in un elencoCiao. Stavo dando un'occhiata a questa discussione. Ho trovato l'argomento molto utile, ma non riesco a trovare la soluzione. Dev'essere stato eliminato o qualcosa del genere? Ti sarei grato se potessi ripubblicarlo. Grazie!Re: Eliminazione di colonne che non sono presenti in un elencoPotrebbe funzionare se si hanno solo elementi numerici (valori L). Tuttavia, questo accade raramente con i nomi di colonna. Forse si potrebbe passare da nomi a numeri utilizzando array associativi in modo intelligente.Re: Eliminazione di colonne non presenti in un elencoGrazie, ha funzionato. Vorrei che si potessero usare due liste e sottrarne/estrarre una dall'altra.Re: Eliminazione di colonne non presenti in un elencoEsegui un ciclo tra tutte le colonne per creare un elenco delle colonne che desideri eliminare, confrontando ogni colonna con l'elenco delle colonne da mantenere.
Esempio