Extraire des nombres de chaînes de tailles inégalesJ'ai une colonne de chaînes avec des nombres intégrés. Je sais comment déterminer si ces chaînes contiennent le texte correct que je recherche, mais pas comment extraire les valeurs qui viennent après chacune d'entre elles. Si les tailles de chaîne étaient égales, je pourrais simplement utiliser la fonction munger en fonction de l'emplacement, mais cela ne peut pas être fait car la taille de la chaîne n'est pas cohérente.
Par exemple "Le correctif dans est abcde +0.2, il y a plus de texte ici fghij -1."
Je souhaite interroger "abcde" et "fghij" et extraire les valeurs respectives +0,2 et -1 dans l'espace juste après l'apparition des chaînes. Il y a généralement un espace suivi d'un +/- et d'un nombre (nombres entiers et décimaux jusqu'à une décimale comme indiqué ci-dessus).
Re : Extraire des nombres à partir de chaînes de tailles inégalesEncore une autre façon - essayez la fonction des mots.Voici la formule de la colonne :
look_for = {"abcde", "fghij", "klmno"};
wlist = Words( :Column 1, " " );
one_num = .;
For( i = 1, i <= N Items( look_for ), i++,
one_word = look_for[i];
f = Contains( wlist, one_word );
If( f,
one_num = Num( wlist[f + 1] );
Break();
);
);
one_num;Re : Extraire des nombres à partir de chaînes de tailles inégalesVous pouvez également utiliser le Regex() fonction avec des expressions régulières dans une formule de colonne. Cette approche peut être utile si l'exemple que vous avez donné ne montre pas toutes les conditions possibles. Ceci est un script pour illustrer l'idée.
Names Default to Here( 1 );
text = "The fix in is abcde +0.2, there is more text here fghij -1.";
answer 1 = Num( Regex( text, ".*abcde ([-+]?\d?.?\d?)", "\1" ) );
answer 2 = Num( Regex( text, ".*fghij ([-+]?\d?.?\d?)", "\1" ) );
Le texte variable dans le script représente la ligne actuelle pour une formule de colonne. Le Réponse 1 serait le résultat dans la même ligne de la première nouvelle colonne de résultats. Vous utilisez l'expression à droite du signe égal pour la formule.
Cet exemple est simple. Il faudrait l'étendre et l'affiner si la nature du texte ou la préface aux chiffres étaient plus compliquées.
Vous disposez également de modèles JMP pour faire correspondre, renvoyer et remplacer des chaînes de caractères.
Re : Extraire des nombres à partir de chaînes de tailles inégalesDécouvrez la fonction Word().Compte tenu des exemples que vous avez donnés, on pourrait simplement rechercher le deuxième mot de la chaîne, en se basant sur la recherche d'un espace
Word(2, , " " )
ou alors
Vous pouvez Contient() pour trouver un "+" ou "-" et à partir de là, substr() la chaîne pour obtenir la valeur numérique
Ci-joint le tableau de données ci-dessous
