Comment identifier les mots (à l'aide d'une formule dans la colonne) qui comportent plus de 2 caractères différents de mon mot de référence ?Salut tout le monde,
J'ai une colonne composée de mots qui combinent différents caractères (c'est-à-dire AAAAAAAAAA - mot de 10 caractères). Je souhaite identifier dans une colonne adjacente les mots qui ont plus de 2 caractères différents (ex. 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 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 
Modélisation statistique avancéeÉtudes de consommation et de marchéConception d'expériencesRe : Comment identifier les mots (à l'aide d'une formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Merci Jthi! Fonctionne bien 
Re : Comment identifier les mots (à l'aide d'une formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Merci pour les informations supplémentaires ! Consultez le script d'édition le plus court de l'index des scripts :

Avec cela, vous pourrez peut-être faire quelque chose, à moins que ce ne soit trop lent. Pat Match pourrait peut-être aussi le faire, mais je n'ai pas (encore) cherché comment l'utiliser correctement.
editList = Shortest Edit Script(:List of sequences, "FEBRUARY");
common = "";
For(i = 1, i <= N Items(editList), i++,
If(editList[i][1] == "Common",
common = common || editList[i][2]
)
);
Length(common) < Length(:List of sequences) - 2;

Re : Comment identifier les mots (à l'aide d'une formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Salut Craige,
Merci de votre aide. J'ai 1 à 5e6 et un seul mot de référence. Je veux essentiellement filtrer les mots qui ont plus de 2 lettres différentes par rapport à un mot de référence et je n'ai donc pas besoin de plus de oui/non ou 0/1 comme réponse. En passant par vos questions:
test = "AEIOUA" // nDiff = 0 pour chaîne identique
test = "AAEIOU" // nDiff = 1 - pour les mêmes lettres, réorganisées.
- Le premier A est le seul conservé à la même position. (5 lettres différentes)
test = "AEIOU" // nDiff = 1 pour les mêmes lettres, il en manque une à droite
test = "EIOUA" // nDiff = 1 pour les mêmes lettres, il en manque une à gauche
test = "EIOU" // nDiff = 1
test = "AA" // dDiff = 1
test = "AXA" // dDiff = 1
- La longueur n'est pas la même que celle d'AEIOUA. Pour cela, j'ai appliqué une fonction Len pour filtrer ces mots.
test = "AXXXXA" // dDiff = 1 pour la longueur correspondante
- Le premier et le dernier A sont conservés à la même position. (4 lettres différentes)
test = "AEI UO A" // dDiff = 0 pour les lettres internes échangées
Seulement 2 lettres différentes de AEIIOUA, il passera donc les critères.
test = "AEIOUEIOU" // nDiff = 1 pour les lettres répétées
Longue séquence. Supprimé à l'aide de Len.
Désolé, je n'ai pas été clair en expliquant ma question/problème. J'ai recréé un exemple de ce que je recherche en plus de vos questions.
| Séquence de référence | FÉVRIER |
| | |
| Liste des séquences | Étiquette - plus de 2 caractères différents de la référence ? |
| FÉV UN UARY | Non |
| WAA RUAIRE | Oui |
| YRAURBEF | Oui |
| FÉVRIER R. R. R. | Non |
| FÉVRIER W | Non |
| Oui E AURBEF | Oui |
| Oui E AUR ARY | Oui |
Re : Comment identifier les mots (à l'aide d'une formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Nous avons besoin de quelques exemples supplémentaires. À quoi sert le nombre de différences (ne pas trop préciser, indiquer là où cela n'est pas important.)
ref = "AEIOUA" // essayer 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, il en manque une à droite
test = "EIOUA" // nDiff = ? pour les mêmes lettres, il en manque une à gauche
test = "EIOU" // nDiff = ?
test = "AA" // dDiff = ?
test = "AXA" // dDiff = ?
test = "AXXXXA" // dDiff = ? pour correspondre à la longueur
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 » ? Un décompte des différences sera-t-il utile ?
Re : Comment identifier les mots (à l'aide d'une 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 souhaite identifier dans une colonne adjacente les mots qui ont plus de 2 caractères différents ". Ce que j'ai suggéré signalerait les lignes où chaque cellule de la colonne source contient une chaîne 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 (à l'aide d'une 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 encore 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 ligne 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 (à l'aide d'une 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 sais 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. Avez-vous une suggestion pour mettre à niveau la formule que vous avez écrite ?
Re : Comment identifier les mots (à l'aide d'une formule dans la colonne) qui ont plus de 2 caractères différents de mon mot de référence ?Il existe de nombreuses façons de procéder. 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 quelques caractères, nous savons qu'il y avait plus d'un caractère dans la chaîne. Si vous avez plusieurs valeurs à remplacer, vous devriez pouvoir utiliser la même idée en modifiant les arguments de la fonction Substitute.
Re : Comment identifier les mots (à l'aide d'une 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 celui-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 de quelques connaissances en JSL pour comprendre cela et pouvez utiliser « Aide > Index de script » pour comprendre exactement comment cela fonctionne si vous en avez besoin.