Comment puis-je parcourir les noms de colonnes dans une instruction for ?Bonjour, j'essaie de créer une nouvelle colonne de formule qui parcourra les colonnes précédentes. Les colonnes précédentes sont réparties en deux groupes, chaque groupe a des noms de colonnes qui commencent par l'une des deux chaînes.Ensuite, ces en-têtes de colonnes se terminent par des nombres entiers, 0, 1, 2,... jusqu'à 22. Veuillez consulter la capture d'écran PDF ci-jointe de mon code et faites-moi savoir pourquoi cela ne fonctionnera pas.N'ayant pas utilisé JMP avant hier, je suppose que j'utilise peut-être incorrectement "i" ou "%i" dans les noms de colonnes de l'instruction IF.
Merci d'avance!
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Liz_s, oui, cela fait référence aux numéros de colonnes.
Dans le menu principal de JMP, sélectionnez Aide > Livres > Guide de script et accédez à la page 439 (ou à proximité). Ceci est une section du chapitre 9 Tableaux de données , section 1, Travailler avec des objets de table de données , sujet Accès aux valeurs des données . Lisez toute cette section pour découvrir d’autres méthodes pour accéder et attribuer des valeurs de données.
Commentaire : La clé de votre tâche était de trouver quelle colonne de décision contenait « Matriculé » pour chaque ligne. Faire une boucle plus de 22 fois pour chaque ligne représente beaucoup d'imbrication. La clé ici pour en savoir plus est d'utiliser Aide > Index de script > Fonctions pour en savoir plus sur Contient.
Contains( list|string, matching string) renvoie la première position où il se trouve. Remarque : Loc() renvoie toutes les positions d'une liste ou d'une matrice où se trouve la valeur correspondante. Comprendre que dt[row, c1::cn] où les colonnes c1 à cn sont des caractères renverra une liste des valeurs du tableau.Contains() trouvera la position (k), ce sera donc la position correcte pour la colonne d'organisation.
La clé est de « connaître vos outils », comment accéder, attribuer et connaître vos fonctions.
Bonne chance dans votre parcours d’apprentissage de JMP.
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Salut,
Ce script a parfaitement fonctionné et merci de m'avoir aidé à surmonter ma méconnaissance de l'éditeur de formule JMP.Ce code élégant était davantage ce que j'avais en tête lorsque j'ai commencé à essayer d'écrire ma boucle.Juste une dernière question, pourriez-vous s'il vous plaît expliquer votre sélection des nombres 6 et 10 dans la déclaration Index ?
Je suppose que les numéros d'index 6 et 10 étaient dus au fait qu'il y avait 5 de chacun des deux types de colonnes dans votre fichier de test et 10 colonnes au total ?Donc 6 commence l'ensemble des colonnes de décision et 10 termine les colonnes de décision ?(J'ai décidé d'éviter de deviner et de vous demander simplement.)
Je me sens reconnaissant !
Liz_S
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Voici la formule qui fonctionne pour le tableau de données d'immatriculation, il s'agit simplement de texte JSL.
k = Contains( Current Data Table()[Row(), Index( 6, 10 )], "Matriculated" );
If( k > 0,
Column( "designation_organization_" || Char( k ) )[Row()],
"None"
);
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?La première chose que j'ai essayée a été de copier et coller la formule de la boîte bleue dans une nouvelle fenêtre de script de colonne. Ça ne colle pas ; c'est comme si les informations contenues dans la case bleue de votre solution étaient une image ou une capture d'écran.
Oui, je sais comment double-cliquer dans une zone de formule pour pouvoir taper un script. Je ne vois toujours pas comment ajouter des indices de lignes et de colonnes à une instruction Contain. Mais merci encore pour les premières parties de votre réponse.Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Parfois, mettre une formule à plusieurs instructions est pénible et il est préférable de la saisir.
Lorsque vous double-cliquez dans la formule, une fenêtre de script s'ouvre.Cela pourrait prendre un peu de pratique. Copiez peut-être la formule qui utilise les numéros de colonne et collez-la dans la case bleue, puis double-cliquez pour afficher l'éditeur de script.
J'espère que cela aide.
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Salut gzmorgan0,
Le premier script que vous avez écrit pour le tableau que vous avez joint fait ce que je voudrais et est génial !Je pourrai terminer mon projet au travail aujourd'hui.Merci!Cependant, comme il s'agit du troisième jour pour moi dans JMP, j'aimerais comprendre comment écrire la dernière option que vous avez écrite à l'aide de l'éditeur de formules dans JMP.Lorsque j'ai essayé de créer la nouvelle colonne dans votre table après avoir exécuté le premier script, j'ai rencontré deux problèmes :
1.) Je ne pouvais pas utiliser deux fonctions indépendantes dans l'éditeur de formules de colonnes dans deux instructions distinctes. J'ai commencé avec le Contient fonction et ajouté un ";" après ça.Mais quand j'ai cliqué sur le Si fonction, il a intégré automatiquement l’instruction Contains.Bizarre.je ne veux pas Contient intégré dans Si ou vice versa.
2.) Je n'ai pas vu comment ajouter row() et Index(6,10) au Contient ( Tableau de données actuel (),...L'option ^ m'a donné une nouvelle "partie" séparée par des virgules : Contient( Tableau de données actuel() , partie , "Immatriculé").Comment avez-vous inséré les options de lignes/colonnes dans votre Contient fonction dans l'éditeur de formule ?
J'ai parcouru les didacticiels du kit de bienvenue mais je n'ai pas vu suffisamment d'informations sur les scripts et l'utilisation de l'éditeur de formules dans une nouvelle colonne.Connaissez-vous une vidéo Youtube que vous pourriez recommander aux débutants ?Mais j'apprécierais également une autre réponse de votre part si vous avez le temps.
Merci beaucoup!
Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Il existe plusieurs méthodes pour accomplir ce dont je pense avoir besoin. Tout d’abord, vous devez comprendre la syntaxe JMP pour référencer les colonnes.Par exemple, si vous souhaitez créer une nouvelle colonne qui choisit au hasard l'organisation 1 à 5, voici la formule de la colonne
i = Random Integer(1,5);
Column( "designation_organization_" || Char( i ) )[Row()];
|| est l'opérateur de concaténation, Char(i) est la chaîne. Ensuite, les parenthèses représentent la ligne de la colonne spécifiée.
J'ai joint un tableau. Je n'ai aucune idée de ce à quoi ressemble votre table, mais peut-être que ce script vous aidera.
Ouvrez le tableau ci-joint.Ensuite, exécutez ce script
dt=data table("matriculation");
cnmes = dt << get column names("string");
dcols = {}; //create a list of decision columns
for(i=1, i<=nitems(cnmes), i++,
if( contains(cnmes[i], "_decision_"), Insert into(dcols, cnmes[i]) )
);
//create a new column
matcol = dt << New Column("Major", Character);
//rowwise
for(i=1, i <= nrow(dt) , i++,
k = Contains(dt[i,dcols], "Matriculated"); <BR /> //dt[ i, dcols] is a list of values in the decision columns from row i<BR /> //contains returns the position in the list for "Matriculated"
matcol[i] = if(k>0, Column("designation_organization_" || char(k))[i], "None" );<BR /> //if k > 0, "Matriculated" was found, so assign to matcol the organization for the corresponding k
);Notez que JMP permet d'utiliser les numéros de colonnes. Voici un script, pour une nouvelle colonne du tableau ci-joint, qui utilise les numéros de colonne

Re : Comment puis-je parcourir les noms de colonnes dans une instruction for ?Votre PDF est difficile à lire.Une seule des 22 colonnes portera-t-elle « Matriculé » ? Ou en aurez-vous plusieurs et vous voulez tous les codes d'organisation ?