supprimer les colonnes CHAR s'il n'y a qu'une seule valeur, aucune variation de chaîneJe me demande comment je peux écrire un script pour examiner toutes les colonnes afin de voir s'il y a au moins 2 valeurs différentes et supprimer toutes les colonnes à valeur unique ? J'ai des milliers de colonnes « fonctionnalité », toutes de type caractère, mais un nombre notable d'entre elles n'ont qu'un seul enregistrement... autrement dit le niveau de distribution = 1.
comment détecter et supprimer les colonnes à 1 enregistrement ?
Automatisation et scriptsRe : supprimer les colonnes CHAR s'il n'y a qu'une seule valeur, aucune variation de chaîneVoici un petit script simple qui trouve toutes les colonnes de caractères, puis va de la fin de la liste au début et s'il n'y a qu'une seule valeur sans compter les espaces, supprime la colonne
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 : supprimer les colonnes CHAR s'il n'y a qu'une seule valeur, aucune variation de chaîneIdée similaire à celle de Jim (utilisez résumer pour prendre des valeurs uniques, puis supprimez les valeurs manquantes s'il y en a), mais une approche un peu différente : utilisez le filtre chacun pour trouver les colonnes à supprimer, puis supprimez-les toutes en même temps à l'aide de la suppression des colonnes.
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 : supprimer les colonnes CHAR s'il n'y a qu'une seule valeur, aucune variation de chaîneUne chose à noter : Jim et moi supprimons tous les deux la valeur manquante de notre liste de valeurs uniques. En fonction de vos données/modèle/cas d'utilisation, vous souhaiterez peut-être (ou devrez) considérer cela comme une valeur distincte, alors tenez-en compte. Nos deux scripts peuvent en tenir compte MAIS ils nécessitent de petites modifications.