Bonjour, je suis en train d'écrire un script pour automatiser les manipulations de mes tables (principalement l'ajout de nouvelles colonnes avec des formules de correspondance) pour des données comportant un nombre variable de contenus de colonnes uniques et de résultats finaux.
J'ai écrit un script pour identifier les éléments uniques de :SampleID (enregistré dans Init_IDs) et j'ai invité l'utilisateur à les renommer dans une fenêtre contextuelle qui enregistre les modifications dans New_IDs. Je peux ensuite créer ma nouvelle colonne avec une formule de correspondance standard :
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
Cette formule fonctionne pour mon jeu de données de test où la taille de New_IDs était de 6, mais cela va changer. J'aimerais donc utiliser une boucle For pour la rendre plus flexible. Voici ce que j'ai essayé, mais cela ne fonctionne pas :
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
J'ai vérifié que N Items (New_IDs) génère la valeur 6. J'ai essayé la boucle For seule, sans la combiner avec l'autre formule Match, et cela ne fonctionne pas non plus. Donc, même si le '+' entre les deux peut finalement poser problème, le problème principal semble être ma boucle For elle-même.
J'ai également essayé de simplifier avec une instruction SI au lieu d'une formule EQUIV, sans succès non plus :
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);