Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueSalut,
J'ai deux colonnes nommées « Pays de messagerie » et « État de messagerie ». Certaines lignes sous Pays de diffusion, en particulier pour les États-Unis, ne contiennent aucune valeur.Je souhaite mettre à jour la colonne Pays de diffusion avec la valeur « USA » lorsque l'État de diffusion contient des valeurs correspondant à divers codes d'État aux États-Unis. J'ai près de 250 000 lignes, la mise à jour manuelle n'est donc pas possible. Je suis nouveau dans JMP et dans les scripts et je n'arrive pas à trouver un moyen de résoudre ce problème.
J'ai joint une capture d'écran de mes exemples de données. Toute aide serait appréciée. Merci d'avance.

Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueCe code doit être exécuté en tant que script distinct et non en tant que formule.Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueBonjour,
C'est peut-être une question idiote mais lorsque vous utilisez ce code, l'utilisez-vous en éditant la formule de la colonne ? Je l'ai fait avec une formule comme celle-ci puisque je ne le fais pas sur la base d'une valeur manquante. J'essaie de mettre à jour ma colonne Fournisseur de sorte que lorsque la colonne Étiquette soit égale à "MnDOT Est". le vendeur est égal à "MnDOT". Mais cela me donne une erreur Column Vendor Formula Interrupted avec une référence illégale. Cela change ceux-ci en MnDOT mais supprime simplement tous les autres. J'espère que cela à du sens.
For Each Row(
temp = :Vendor;
:Vendor = If( :Label == "MnDOT Est.", "MnDOT", temp);
);Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifique- Ne convertissez pas la valeur de date en caractère.
- Dans les colonnes numériques (qu'est-ce qu'une colonne de date), le "." indique que la valeur est manquante.
- Vous devez faire un peu de lecture.Les livres « Utilisation de JMP » et « Guide de script » sont des lectures incontournables.Vous pouvez les trouver dans le menu déroulant Aide
Aide==>Livres==>Utilisation de JMP
Aide==>Livres==>Guide de script
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueMerci à Txnelson.
Dans le même ordre d'idées, s'il manque une entrée de date, suis-je préférable de convertir la colonne en caractère, puis d'exécuter le script et également de faire le "." point qui apparaît dans les colonnes manquantes interprétées comme manquantes dans Ismissing() ou doit-il être simplement vide ?
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueDonc, si la valeur de la colonne A est manquante, vous souhaitez que la valeur de la colonne A2 soit affectée à la colonne A ?Et pareil pour 5 autres colonnes ?
Si c'est ce que vous demandez, voici comment procéder pour la colonne A, et répéter pour les 5 autres colonnes
For Each Row(
If( IsMissing(:A), :A = :A2);
If( IsMissing(:B), :B = :B2);
);Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueJ'ai un problème similaire. J'ai des identifiants et des dates qui devraient être identiques mais dans des colonnes différentes en raison de valeurs manquantes.
Comment puis-je appliquer cela pour remplacer uniquement les lignes avec des valeurs manquantes pour 6 colonnes par des valeurs provenant d'un ensemble différent de 6 colonnes ?
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueTrès utile.! Cela a également fonctionné pour mon cas d'utilisation.! Merci beaucoup.!
@txnelson a écrit:
Voici une solution prenant un peu de liberté avec le script de Mark
For Each Row(
temp=:Mailing Country;
:Mailing Country = If( Is Missing( :Mailing Country ) & Contains( {"AL","AZ"}, :Mailing State ), "USA" ,temp);
);
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueMerci Jim. Cela a parfaitement fonctionné.
Merci Mark pour votre script.
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueVoici une solution prenant un peu de liberté avec le script de Mark
For Each Row(
temp=:Mailing Country;
:Mailing Country = If( Is Missing( :Mailing Country ) & Contains( {"AL","AZ"}, :Mailing State ), "USA" ,temp);
);Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueSalut Mark,
Merci pour votre solution.
Cependant, je remarque que lorsque j'exécute votre script, les lignes sans valeur sont mises à jour avec "USA" alors que les lignes avec la valeur présente auparavant disparaissent après l'exécution du script.
J'ai joint une capture d'écran avant et après l'exécution du script. Merci.
Before scriptBefore scriptAvant le scénario
After scriptAfter script Après le scénario
Re : Mettre à jour la colonne avec des valeurs lorsqu'une autre colonne contient une valeur spécifiqueVous pouvez utiliser une formule dans une nouvelle colonne comme celle-ci :
If( Is Missing( :Mailing Country ) & Contains( {"AL","AZ"}, :Mailing State ), "USA" )
Si vous ne souhaitez pas de nouvelle colonne, vous pouvez exécuter ce script pour remplacer les valeurs manquantes dans la colonne existante :
For Each Row(
:Mailing Country = If( Is Missing( :Mailing Country ) & Contains( {"AL","AZ"}, :Mailing State ), "USA" );
);
Dans les deux cas, vous devrez étendre la liste pour inclure le code à deux lettres de chaque état avant de l'utiliser.