Recoder les colonnes contenant une valeur de caractère à la fin d'une colonneBonjour,
J'ai une table comme
| IDENTIFIANT | Colonne2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
Je voudrais recoder la colonne ID de telle sorte que toutes mes valeurs comme « ABC001234D » et « ABC001234F » deviennent « ABC001234 » - en gros, je veux supprimer cette dernière lettre dans la déclaration. Cependant, je ne peux pas le faire manuellement. Il y a trop de lignes à faire et je ne pourrais pas l'écrire manuellement pour chaque ID pouvant être utilisé dans le script. Vous cherchez un moyen de le faire via des scripts. Merci!
Modélisation statistique avancéeAutomatisation et scriptsMélange et nettoyage des donnéesPersonnalisation de masseRe : Recoder les colonnes contenant une valeur de caractère à la fin d'une colonnePour cela, j'opterais pour regex. J'ai aimé ça à un moment donné pour commencer avec les regex au moins à un certain niveau : regexone consultez également Fonctions de caractères JMP - Regex et Regex de l'index de script.
Voici un exemple avec deux manières possibles de supprimer les caractères de fin à l'aide de Regex dans JMP (ils peuvent également être facilement modifiés pour prendre en charge les lettres non majuscules) :
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(5),
Compress File When Saved(1),
New Column("ID",
Character,
"Nominal",
Set Values(
{"ABC001235G", "ABC001234", "ABC001235", "ABC001234D", "ABC001234F"}
)
)
);
dt << New Column("Regex1", Character, Nominal, Formula(Regex(:ID, "^[A-Z]+(\d+)")));
dt << New Column("Regex2", Character, Nominal, Formula(Regex(:ID, "[A-Z]*$", "", GLOBALREPLACE);));
En fonction du cas d'utilisation, choisissez-en un (facile à tester avec l'exemple de code comment ils fonctionnent avec différentes chaînes) :
Le premier correspondra à 1 ou plusieurs caractères majuscules à partir du début de la chaîne, suivis de n'importe quel nombre de chiffres (il ignorera donc tout ce qui se trouve après les chiffres).
Le deuxième correspondra à zéro ou plusieurs caractères majuscules à la fin de la chaîne et les remplacera par une chaîne vide.
Re : Recoder les colonnes contenant une valeur de caractère à la fin d'une colonneVous pouvez le faire avec la formule suivante :
val = Reverse( :ID );
While( Is Missing( Num( Substr( val, 1, 1 ) ) ),
val = Substr( val, 2 )
);
Reverse( val );
Cela supprimera toutes les valeurs non numériques de fin
Re : Recoder les colonnes contenant une valeur de caractère à la fin d'une colonneSalut Saneal !
Voici une formule qui pourrait vous aider, mais vous devrez faire quelques hypothèses sur les conventions de dénomination et l'exactitude de la variable ID.
Si vos valeurs d'ID comportent systématiquement 3 caractères au début, vous pouvez créer une nouvelle colonne et utiliser cette formule :
Substr( :ID, 1, 3 ) || Regex( :ID, "\d+" )
Cette formule permettra une longueur incohérente des valeurs numériques.Il n'est pas non plus trop difficile d'adapter la formule pour avoir un nombre de caractères incohérent au début des valeurs d'identification.Mais si quelqu'un saisit l'ID à tort comme 0 (le chiffre) au lieu de O (la lettre), ou toute autre erreur typographique, vous risquez d'obtenir des résultats inattendus.
Bonne chance,
Kévin