Sélectionner les colonnes en fonction des mots contenus dans l'en-têteJ'ai une analyse que j'aimerais effectuer mais je dois sélectionner plusieurs colonnes en fonction des mots contenus dans l'en-tête avant de pouvoir le faire, actuellement je le fais manuellement mais c'est extrêmement lent et je peux manquer certaines colonnes si je ' Je ne fais pas attention.
dans l'exemple d'image, je voudrais sélectionner les 2 colonnes commençant par 'Quelles couleurs' mais aucune des 4 autres. Ils peuvent être répartis sur d'autres colonnes et leur nombre sera différent par expérience. Une fois sélectionnés, je peux ensuite les extraire et effectuer l'analyse.
Cela doit être fait automatiquement sans aucune intervention de l'utilisateur et je ne trouve aucun jsl qui le fasse mais je suis sûr qu'il doit exister, c'est juste que je n'ai pas pu le trouver ou que je ne connais pas le bon terme de script.

Salutations
David
Automatisation et scriptRe : Sélectionner les colonnes en fonction des mots contenus dans l'en-têteMerci!Re : Sélectionner les colonnes en fonction des mots contenus dans l'en-têteLa fonction Contient() ne renvoie pas un booléen de 0 ou 1, elle renvoie l'emplacement du caractère où la comparaison a été trouvée.
Essayez d'utiliser
Contains( colList[i], "N" ) > 0
Re : Sélectionner les colonnes en fonction des mots contenus dans l'en-têteJ'essaie d'utiliser ce script pour sélectionner des colonnes contenant une chaîne au milieu du nom de la colonne.Quand je mets "P" ou "PN" dans le contains() ça marche, mais pas quand j'insère "N" ou "NP" ou "NP3".
Merci
For( i = 1, i <= N Items( colList ), i++,
If(
// Put in any selection criteria you want
//Left( colList[i], 2 ) == "PN" ,
// or it could be
Contains( colList[i], "N" ) == 1
,
Column( dt, colList[i] ) << set selected
)
);
Re : Sélectionner les colonnes en fonction des mots contenus dans l'en-têtemerci beaucoup cela fonctionne parfaitement
Re : Sélectionner les colonnes en fonction des mots contenus dans l'en-têteJe ne pense pas que cela ajoute quoi que ce soit étant donné l'exigence "aucune entrée de l'utilisateur". Mais je voulais profiter de l'occasion pour mentionner que le filtrage des colonnes est très pratique lorsque vous travaillez de manière interactive (et qu'il est facile de l'oublier). Parfois, les gens utilisent des scripts parce qu'ils pensent que c'est "difficile" via l'interface utilisateur.
Le 'Filter Col Selector' est également scriptable :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Filter Col Selector Example", fcs = Filter Col Selector( DataTable("Big Class") ));
// See what messages the 'Filter Col Selector' understands
ShowProperties(fcs);
// Try it out
Print(fcs << GetItems);
Wait(3);
fcs << NameContains("ei");
Print(fcs << getItems);Re : Sélectionner les colonnes en fonction des mots contenus dans l'en-têteVoici un moyen très simple de faire ce que vous demandez, et il est extensible à des exigences beaucoup plus complexes
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colList = dt << get column names( string );
dt << clear column selection;
For( i = 1, i <= N Items( colList ), i++,
If(
// Put in any selection criteria you want
Left( colList[i], 2 ) == "PN" ,
// or it could be
// contains( colList[i], "PN") == 1,
Column( dt, colList[i] ) << set selected
)
);
If( N Items( dt << get selected columns ) > 0,
dtSelected = dt << subset( selected rows( 0 ), selected columns( 1 ) )
);