Sélectionnez les colonnes avec un "motif"Bonjour
C'est une tâche simple mais je n'ai pas trouvé de moyen immédiat de le faire.
J'ai une table avec plusieurs colonnes (~ 5 000) ; Je dois sélectionner un sous-ensemble de colonnes, puis extraire une table de sous-ensemble.
La façon la plus stupide de procéder serait de sélectionner chaque colonne dans le sélecteur de colonne.
En fait, je pourrais facilement identifier la colonne dont j'ai besoin en appliquant au nom de la colonne un "modèle"
Par exemple, supposons que la colonne soit la suivante :
AAA11
AAA12
ABB22
XXX99
CAB32
CAB99
Je dois sélectionner les colonnes dont le nom comporte un "B" et se termine par un "2"
Ils peuvent être identifiés par un modèle tel que "*B*2" , où "*" est un caractère générique.
Dans l'exemple, le modèle sélectionnerait "ABB22" et "CAB32".
Je n'ai pas trouvé de moyen simple de procéder.
Merci d'avance
Emmanuelle
Mélange et nettoyage des donnéesRe: Sélectionner des colonnes avec un « motif »Si vous avez vraiment besoin de regex et que vous disposez d'une version récente de JMP qui inclut FilterEach :
dt = Open( "$sample_data/big class.jmp" );
colList = dt << get column names( string );
// (>?.*?) is an atomic match for a reluctant (not greedy) match of 0 or more characters
// atomic is important when the match might fail to keep if from slowing down a lot on long names
Filter Each( {name}, colList, !Is Missing( Regex( name, "^((.e.)|((>?.*?)a(>?.*?)e.*))$" ) ) );
{"nom", "âge", "sexe"}
Les expressions régulières, comme toujours, sont plus amusantes à écrire qu'à lire. Soyez prudent avec plusieurs .* dans une seule expression régulière qui pourraient ne pas correspondre... elle pourrait essayer de nombreuses alternatives infructueuses.
Re : Sélectionner les colonnes avec un "motif"Voici un script simple pour dresser une liste de colonnes répondant aux critères
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( string );
For( i = N Items( colList ), i >= 1, i--,
If( !(Contains( colList[i], "B" ) & Right( colList[i], 1 ) == "2"),
Remove From( colList, i, 1 )
)
);