Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeVous rencontriez un problème où les lignes avec plusieurs noms de colonne n'étaient pas gérées correctement.Voici ma tentative de résolution de votre problème.

Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
current data table(dt);
// Build execution string
sumString = "";
for each row(
if(:Yield SummaryBins != "",
i=1;
while(word(i,:Yield SummaryBins,"[] ") != "",
sumString = sumString || ", :\!"" || word(i,:Yield SummaryBins,"[] ") || "\!"n";
i++;
)
)
);
// Remove first comma
sumString = substr(sumString, 1);
// Execute new column string
eval(parse("dt2<<NEW column=""></NEW>Re : Comment créer une formule de colonne en utilisant un nom de colonne à partir d'une listeMerci Jim.
Votre code fonctionne. Je veux créer des colonnes séparées pour chaque groupe.
Par exemple : dans le cas ci-dessous, il existe deux groupes Opens et Shorts qui contiennent le nom de la colonne respective.
Je veux avoir deux colonnes différentes avec une formule qui additionne les valeurs respectives
Colonne 1 (Somme des colonnes (39, 41, 43)) et Colonne 2 (Somme des colonnes (38, 40, 42)) dans le tableau récapitulatif

Re : Comment créer une formule de colonne en utilisant un nom de colonne à partir d'une listeIl s'agit simplement de développer le code que j'ai fourni.
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Build execution string
openString = shortsString = "";
For Each Row(
If( :Yield SummaryBins != "",
If( :Yield SummaryLabel == "Opens",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
openString = openString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
If( :Yield SummaryLabel == "Shorts",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
shortsString = shortsString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
)
);
// Remove first comma
openString = Substr( openString, 1 );
shortsString = Substr( shortsString, 1 );
// Execute new column strings
Eval( Parse( "dt2<<NEW column=""></NEW>
Veuillez prendre le temps d'étudier le code fourni et de répondre avec des questions supplémentaires lorsque vous ne comprenez pas comment le code fonctionne.
Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeBien sûr, c'est possible... Quelles sont les règles ?Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeSalut @txnelson , pourriez-vous conseiller?
Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeMa lecture de votre description est que la règle que vous avez est de créer une nouvelle colonne pour chaque ligne dans le tableau des conditions qui a une valeur dans la colonne Yield SummaryLabel.
Je vous suggère donc de lire chaque ligne dans le tableau des conditions, et lorsque vous trouvez une ligne avec une valeur dans la colonne Yield SummaryLabel, vous créez la nouvelle colonne.
Il y a un cas où vous avez un problème.La ligne 14 qui a SYL_Yield spécifié, elle a une valeur de 1 pour Yield SummaryBins.Il n'y a pas de colonne appelée "1".

Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeLa ligne 14 peut être exclue. Pouvez-vous partager le code ? Je voulais juste me référer et me faire une idée
Re : Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeNames Default To Here( 1 );
dt = Data Table( "Condition table" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Rule: Create a new Summary Column for each row in the Condition Table
// that has a value in the Yield SummaryLabel column
For( i = 1, i <= N Rows( dt ), i++,
If( dt:Yield SummaryLabel[i] != "",
theString = "";
k = 1;
While( Word( k, dt:Yield SummaryBins[i], "[] " ) != "",
theString = theString || ", :\!"" || Word(
k,
dt:Yield SummaryBins[i],
"[] "
) || "\!"n";
k++;
);
theString = Substr( theString, 1 );
Eval(
Parse(
"dt2<<NEW column=""></NEW>
La seule compensation que les membres de la communauté obtiennent pour avoir aidé d'autres membres est la satisfaction qui vient des membres qu'ils ont aidés à devenir plus autonomes.Couper et coller le code de travail de quelqu'un d'autre n'est pas un bon moyen de devenir autonome.
Re : Comment créer une formule de colonne en utilisant un nom de colonne à partir d'une liste@txnelson Merci. Très appréciée.
Peut-on le faire dynamiquement ? J'ai des cas où il y a plus de 2 groupes. Écrire une fonction d'exécution de chaîne séparée serait fastidieux.
J'ai joint un tableau de référence ci-dessous
Re : Comment créer une formule de colonne en utilisant un nom de colonne à partir d'une liste@txnelson Les règles sont similaires à l'exemple précédent.
Créez chaque groupe de colonnes séparé avec une formule qui additionne les bacs respectifs.
Je souhaite créer une colonne dans le tableau récapitulatif des bacs souples avec l'ajout de tous les bacs de nom de colonne dans la formule.
Par exemple : Créer une colonne de groupe de courants IDD avec la formule (Sum( Column ("52", "42","49") )),
Créer une colonne de groupe ouverte avec une formule (Somme( Colonne ("39", "41","43") ))
et de même pour les groupes d'étiquettes restants dans la colonne d'étiquettes Récapitulatif du rendement
Comment créer une formule de colonne à l'aide d'un nom de colonne à partir d'une listeSalut,
Je souhaite créer une nouvelle colonne dans la 2ème table JMP avec une formule qui additionne simplement les colonnes contenues dans la liste (dans le code, j'ai attribué le nom de la colonne à binss.
Par exemple : la liste contient les noms de colonne "39", "41", "43". Je souhaite créer une nouvelle colonne dans le tableau récapitulatif de Soft Bin en ajoutant tout cela dans la formule
Je n'arrive pas à comprendre ce que je fais de mal en passant de la liste {""} de colonnes à la référence aux colonnes.
Toute aide est très appréciée.
Voici le code que j'ai essayé
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Try( For Each Row( :Yield SummaryBins = Word( 1, :Yield SummaryBins, "[]" ) ) );
grouplist = dt:Yield SummaryBins << get values;
For( i = N Items( grouplist ), i >= 1, i--,
If( grouplist[i] == "",
Remove From( grouplist, i, 1 ),
));
binss = {}; /// list contaiting bin value
For( i = 1, i <= N Items( grouplist ), i++,
If( Contains( grouplist[i], " " ),
Insert Into( binss, grouplist[i] )
)
);
adad = Words( binss[1], " " );
F = Eval Expr( Sum( Expr( adad ) ) );
/// Something doesn't seem to right in the below loop
For( i = 1, i <= N Items( binss ), i++,
dt2 << New Column( binss[i], "Numeric", "Continuous", Format( "Percent", 12, 2 ), Formula( Name Expr( F ) ) ););
Merci,
Jack
Modélisation statistique avancéeExploration et visualisation des donnéesPersonnalisation de masseIngénierie de la qualité et des procédés