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 par un processus manuel. 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 par le biais de scripts. Merci!
AnalytiqueTableau de donnéesRe: 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 nommage et l'exactitude de la variable ID.
Si vos valeurs d'ID ont 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 incohérent de caractères au début des valeurs d'ID.Mais si quelqu'un tape mal l'ID en tant que 0 (le chiffre) au lieu de O (la lettre), ou toute autre erreur typographique, vous pouvez obtenir des résultats inattendus.
Bonne chance,
Kévin
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 colonnePour cela, j'irais avec regex. J'ai aimé cela à un moment donné pour commencer avec regex au moins à un certain niveau : regexone regarde aussi 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 être facilement modifiés pour prendre également 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);));
Selon le 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 d'un nombre quelconque de chiffres (il ignorera donc tout ce qui se trouve après les chiffres).
Le second correspondra à zéro ou plusieurs caractères majuscules à partir de la fin de la chaîne et les remplacera par une chaîne vide.