Re : Comment sélectionner des lignes sur une colonne avec un RegExdt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end"n, , "Insert" ) == 1
)
Re : Comment sélectionner des lignes sur une colonne avec un RegExSalut Jim,
Je reçois toujours une "colonne non résolue à la ligne 1 dans l'accès ou l'évaluation de 'Aligned_bin_on_ref(ref[+/-]strand:start-end' , As Column/*###*/()"
J'ai essayé votre solution avec et sans le "n" après le nom de la colonne, juste au cas où ce ne serait pas une faute de frappe.
BTW j'utilise JMP 16.0.0
dt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end", ,"Insert" ) == 1 );
Re : Comment sélectionner des lignes sur une colonne avec un RegExMerci beaucoup Jim.Après avoir ajouté la parenthèse manquante ")" fonctionne comme un charme.Cela va me faire gagner pas mal d'heures. Acclamations!
Re : Comment sélectionner des lignes sur une colonne avec un RegExContient(...) est une fonction vraiment intéressante. Il semble qu'il puisse renvoyer juste vrai ou faux, vrai si la chaîne de test se trouve n'importe où dans la chaîne source, et faux sinon.
Il renvoie en fait la position (de la première occurrence) de la chaîne de test dans la source, et 0 si elle n'est pas trouvée. Puisque 0 signifie faux et différent de zéro signifie vrai, Contient(...) fonctionnera très bien si vous attendez le résultat vrai/faux.
Mais, comme le montre l'exemple de Jim, vous pouvez utiliser la position de la première occurrence pour déterminer si elle se trouve au début. Ce sera plus efficace que regex(...) qui fera tourner plus de machines pour faire ce test facile.
Contient est plus facile à lire : votre test regex d'origine pourrait ressembler à ceci :
dt << select where( !Is Missing( Regex( dt:"Aligned_bin_on_ref(ref[+/-]strand:start-end)"n, "^Insert" ) ) );
car regex(...) renvoie une valeur manquante lorsqu'elle ne correspond pas.
Dans les deux cas, un commentaire aidera la prochaine personne qui maintient le code, soit /* ==1 pour s'assurer qu'il est au début */ ou /* regex renvoie manquant si non trouvé au ^ début */
edit: regex(...)=="Insert" fonctionnerait également, mais la comparaison avec une valeur manquante ne renvoie pas vrai ou faux donc je l'évite.
Re : Comment sélectionner des lignes sur une colonne avec un RegExCher Craige, merci beaucoup pour l'excellente leçon de JSL !
Très apprécié.
Alfredo
Re : Comment sélectionner des lignes sur une colonne avec un RegExVous n'avez pas correctement copié le JSL.Vous avez 2 virgules après le nom de la colonne et aucun "n" à la fin
dt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end"n , "Insert" ) == 1
)
Je viens de réaliser que mon code avait 2 virgules, ce qui était une erreur... J'ai corrigé ma saisie
Comment sélectionner des lignes sur une colonne avec un RegExBonjour, je souhaite sélectionner toutes les lignes commençant par le mot "Insert" sur une colonne au nom très compliqué : "Aligned_bin_on_ref(ref[+/-]strand:start-end".Je peux sélectionner n'importe quelle ligne en utilisant certaines des autres colonnes, mais le nom de celle-ci est en quelque sorte interprété comme "code".
J'essaie également d'utiliser un Regex car les "valeurs" de la colonne peuvent contenir plusieurs instances du mot "Insérer" et je souhaite sélectionner uniquement celles qui commencent par "Insérer".
C'est le code de base que j'ai avec un autre code que j'ai essayé commenté. Ci-joint un exemple de tableau.
J'apprécierai tous les pointeurs,
Merci!
Alfredo
//----------------- INITIALIZE ---------------
Names Default To Here( 1 );
dt = Current Data Table ();
dt << Clear Select;
//RefCol= "Aligned_bin_on_ref(ref[+/-]strand:start-end";
// dt << Select Where (:Name("Aligned_bin_on_ref(ref[+/-]strand:start-end"), "Insert" );
SelRows = dt << Get Rows Where (RegEx(As Column("Aligned_bin_on_ref(ref[+/-]strand:start-end") , "^Insert") == "Insert");<BR />
//InsertDepth = dt << Subset( (SelRows) );Modélisation statistique avancéeÉtudes de consommation et de marchéPersonnalisation de masseIngénierie de la qualité et des procédésles fenêtres