Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Salut à tous,
J'ai une colonne composée de mots qui ont une combinaison de caractères différents (c'est-à-dire AAAAAAAAAA - mot avec 10 caractères). Je veux identifier dans une colonne adjacente les mots qui ont plus de 2 caractères différents (ie. A B AAAA CE AA). La position à laquelle les lettres sont différentes n'a pas d'importance et de plus, certains mots peuvent également être plus courts ou plus longs que mon mot de référence.
Par conséquent, je souhaite obtenir une formule qui me permettrait de distinguer/identifier les mots qui ont moins/plus de 2 différences de caractères différents par rapport à ma séquence de référence et qui ont la même longueur. Je suis encore débutant dans JMP et je ne sais pas si cela est possible. Laissez-moi savoir si vous avez des suggestions 
Tableau de donnéesRe : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Jetez un œil au tableau ci-joint, qui devrait vous donner un début. Le cœur de celle-ci est une colonne de formule (appelée "Décision" et indiquée par le signe "+" dans le panneau des colonnes du tableau. Cliquer sur le '+' donne :

Vous avez besoin d'une certaine connaissance de JSL pour comprendre cela, et vous pouvez utiliser 'Help > Scripting Index' pour comprendre exactement comment cela fonctionne si vous en avez besoin.
Re : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?De nombreuses façons de le faire. Voici une option supplémentaire :
Names Default To Here(1);
/*
a = "ABAAAACEAA";
b = "AAAAAAAAAA";
Show(!IsMissing(Substitute(a, Left(a,1), "")));
Show(!IsMissing(Substitute(b, Left(b,1), "")));
*/
New Table("Untitled 2",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"ABAAAACEAA", "AAAAAAAAAA", "BBBBAAA"})),
New Column("Column 2",
Numeric,
"Continuous",
Format("Best", 12),
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
)
);
Column1 est la colonne avec des caractères
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
dans cet exemple simple, l'idée est de remplacer toutes les valeurs de la chaîne trouvée à partir de la première position et s'il reste encore des caractères, nous savons qu'il y avait plus d'un caractère dans la chaîne. Si vous avez plus d'une valeur à remplacer, vous devriez pouvoir utiliser la même idée en modifiant les arguments de la fonction de substitution
Re : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Salut Ian,
Merci pour les commentaires. J'ai essayé d'implémenter la formule que vous avez écrite mais je ne comprends pas où puis-je définir que ma séquence de référence est AAAAAAA et pas autre chose. J'ai remplacé le "" dans la sélection des articles par "AAAAAAAA" mais le résultat n'était pas correct. Une suggestion comment puis-je mettre à jour la formule que vous avez écrite?
Re : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Salut Jthi, merci pour la suggestion.
Pour être honnête, j'essaie toujours de comprendre la formule :'). Dans le fichier sur lequel je travaille, je n'ai qu'un seul mot de référence et je dois filtrer plus d'un million d'entrées de lignes avec toutes les combinaisons possibles de position/lettre. Je suppose que cette formule ne fonctionnerait pas car je ne peux pas définir ces valeurs dans la formule. Serait-il possible de l'adapter compte tenu d'une grande base de données Ive ?
Re : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?On dirait que j'ai mal compris ce que tu voulais dire par " Je veux identifier dans une colonne adjacente les mots qui ont plus de 2 caractères différents ". Ce que j'ai suggéré marquerait les lignes où chaque cellule de la colonne source contient une chaîne qui est elle-même composée de plus de deux caractères distincts (il n'y a donc pas de séquence ou de chaîne de référence).
Re : Comment identifier les mots (en utilisant la formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Nous avons besoin d'autres exemples. Quel est le nombre de différences pour (ne pas trop spécifier, indiquez où ce n'est pas important.)
ref = "AEIOUA" // essaie de comprendre la règle de la lettre répétée
test = "AEIOUA" // nDiff = 0 pour chaîne identique
test = "AAEIOU" // nDiff = ? pour les mêmes lettres, réorganisé
test = "AEIOU" // nDiff = ? pour les mêmes lettres, manque une à droite
test = "EIOUA" // nDiff = ? pour les mêmes lettres, manque une à gauche
test = "EIOU" // nDiff = ?
test = "AA" // dDiff = ?
test = "AXA" // dDiff = ?
test = "AXXXXA" // dDiff = ? pour la longueur correspondante
test = "AEIUOA" // dDiff = ? pour les lettres internes échangées
test = "AEIOUEIOU" // nDiff = ? pour les lettres répétées
Ces réponses aideraient à choisir un algorithme :
Vous avez dit ~1e6 mots de test ; combien de mots de référence regardez-vous ?
Aurez-vous besoin de réponses autres que "oui/non il y a plus de 2 différences" ? Est-ce qu'un décompte des diffs va être utile?