elimina le colonne CHAR se c'è un solo valore, nessuna variazione di stringaMi chiedevo come posso scrivere uno script per guardare tutte le colonne per vedere se ci sono almeno 2 valori diversi ed eliminare tutte le colonne a valore singolo? Ho migliaia di colonne "feature", tutte di tipo carattere, ma una quantità notevole di esse ha solo un singolo record al loro interno... ovvero il livello di distribuzione = 1.
come rilevare ed eliminare le colonne da 1 record?
Automazione e scriptingRe: elimina le colonne CHAR se c'è un solo valore, nessuna variazione di stringaEcco un semplice piccolo script che trova tutte le colonne di caratteri e poi va dalla fine dell'elenco all'inizio e se viene trovato un solo valore senza contare gli spazi vuoti, allora elimina la colonna
Names Default To Here( 1 );
dt = Current Data Table();
charCols = dt << get column names( string, character );
For( i = N Items( charCols ), i >= 1, i--,
Summarize( dt, bygroup = by( As Column( charCols[i] ) ) );
If( bygroup[1] == "",
Remove From( bygroup, 1, 1 )
);
If( N Items( bygroup ) <= 1,
dt << delete columns( Column( dt, charCols[i] ) )
);
);
Re: elimina le colonne CHAR se c'è un solo valore, nessuna variazione di stringaUn'idea simile a quella di Jim (usare summary per prendere valori univoci e poi rimuovere quelli mancanti se ce ne sono), ma con un approccio leggermente diverso: usare filter each per trovare le colonne da rimuovere e poi rimuoverle tutte contemporaneamente usando delete columns.
Names Default To Here(1);
dt = Current Data Table();
char_cols = dt << get column names(Character, String);
cols_to_remove = Filter Each({colname}, char_cols,
Summarize(dt, uniq = by(Column(dt, colname)));
Remove From(uniq, Contains(uniq, "")); // to remove missing values from list
N Items(uniq) == 1;
);
dt << Delete Columns(cols_to_remove);Re: elimina le colonne CHAR se c'è un solo valore, nessuna variazione di stringaUna cosa da notare: sia io che Jim rimuoviamo il valore mancante dal nostro elenco di valori univoci. A seconda dei dati/modello/caso d'uso potresti voler (o dover) considerare questo come un valore separato, quindi tienilo in considerazione. Entrambi i nostri script possono tenerne conto MA hanno bisogno di piccole modifiche.