Sélectionnez et supprimez les colonnes contenant une chaîne spécifiqueSalut les amis de JSL,
Quelqu'un peut-il commenter ce qui ne va pas avec mon codage ci-dessous ? J'essaie de rechercher des colonnes contenant une chaîne appelée "Dummy" et j'essaie de la supprimer, mais cela ne fonctionne pas. S'il vous plaît, aidez-moi.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
If( Contains( cols, "Dummy" ),
dt << Select Columns();
dt << Delete Columns();
);
Mélange et nettoyage des donnéesRe : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueÇa marche ! Merci pour la solution, Georg !Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueExcellent, ça marche parfaitement ! Merci !Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueSalut jthi, merci d'avoir essayé d'aider. J'ai trouvé que le script supprime en fait toutes les colonnes, qu'elles contiennent ou non la chaîne "Dummy". Quoi qu'il en soit, Georg et Pauldeen ont déjà fourni la solution.Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueLégère modification pour éliminer le besoin d'une variable de liste supplémentaire :
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
For( i = N Items( cols ), i>=1, i--,
If( Contains( cols[i], "Dummy" ),
dt << Delete Columns( i );
)
);
Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueIl s'agit d'une version modifiée qui peut fonctionner pour vous et qui est facile à comprendre.
Vous auriez besoin d'une boucle sur les colonnes pour voir où se trouve la chaîne de caractères,
et votre utilisation de la sélection et de la suppression n'était pas correcte.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
delete_lst = {};
For( i = 1, i <= N Items( cols ), i++,
If( Contains( cols[i], "Dummy" ),
Insert Into( delete_lst, cols[i] )
)
);
dt << Delete Columns( delete_lst );Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueContient ne vous donnera que le premier index d’une correspondance. Vous pouvez soit parcourir la liste pour générer une liste avec les colonnes à supprimer, soit supprimer pendant la boucle :
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) ));<BR />
cols = dt << get column names( string );
for(i = 1, i <= N Items(cols), i++,
If(Contains(cols[i],"Dummy"),
dt << Delete Columns(cols[i])
);
);Re : Sélectionner et supprimer les colonnes contenant une chaîne spécifiqueJuste pour ajouter... La raison pour laquelle je pose cette question est parce que j'aimerais savoir s'il y a un tas de noms de colonnes comme par exemple 50 colonnes qui contiennent "_Dummy", comment puis-je le supprimer rapidement sans avoir à nommer le noms de colonnes spécifiques en utilisant la commande de suppression de colonnes connue comme "dt << delete column(column("A_Dummy"))". Si je dois utiliser cette commande, je devrais alors taper 50 fois tous les noms de colonnes uniques.