Comment supprimer les virgules inversées dans un nom de variable dans une formuleSalut,
Je voudrais choisir deux colonnes et faire la formule. Cependant, les variables de la formule ont " " autour du nom et ne fonctionnent donc pas. Aucune suggestion?
dt = Current Data Table();
win = New Window( "Clean False Zeroes",
<<MODAL></MODAL>
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleHé! Cela fonctionne si j'utilise le nameexpr. Merci à vous deux pour votre aide. Je suis vraiment content.Re : Comment supprimer les guillemets dans un nom de variable dans une formuleMerci à vous deux pour vos suggestions, mais aucune ne me convient. Pour plus de précisions, j'ai créé un fichier de test avec les données dans la colonne A, Statut dans la colonne B. Ensuite, j'ai créé une troisième colonne avec la formule incluse. Vous pouvez voir que cela fonctionne. Si j'exécute le script pour faire la même chose (je ne sais pas quelles colonnes je veux nettoyer pour les zéros), vous voyez dans la colonne 4 que cela ne fonctionne pas bien. J'espère que tout a du sens.
dt = Current Data Table();
win = New Window( "Clean False Zeroes",
<<MODAL></MODAL>
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleJe pense que tu veux faire quelque chose comme ça :
dt << new column("check",
formula(eval(evalexpr(If(Is Missing(expr(nameexpr(yvar))),.,expr(nameexpr(xvar))) )))
);
The selected names are in the scriptThe selected names are in the scriptLes noms sélectionnés sont dans le script
Sans le travail supplémentaire, vous obtenez quelque chose comme ça
The variable names are in the scriptThe variable names are in the scriptLes noms des variables sont dans le script
Ce qui ne fonctionne que tant que yvar contient :name et xvar contient :height. Ce ne sera pas le cas si vous enregistrez la table, fermez et redémarrez JMP, puis ouvrez la table.
Qu'est ce que ça fait?
eval () est un signal pour formule pour évaluer son argumentation. Normalement, vous ne voudriez pas cela parce que normalement l'expression que vous donnez à formule () ne doit pas être évalué tant que la colonne n'a pas besoin de l'exécuter. Donc, le premier code qui s'exécute est evalexpr () qui renverra une expression réécrite pour la colonne de formule. Evalexpr cherche dans son argumentation expr () fonctions qu'il peut évaluer et remplacer par le résultat ; Il y a deux d'entre eux. Donc, ce qui est évalué, c'est le NomExpr fonction, qui renvoie le nom de son argument... l'argument et le nom de xval est :height.
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleégalement basé sur l'entrée de Craige (merci !) J'ai arrangé le script à l'aide de l'éditeur de dialogue de colonne
dt = Current Data Table();
cd=column Dialog(
Title(" Clean False Zeroes "),
xcols= ColList(" Numeric ", MinCol( 1 ), DataType("Numeric"), modeling type("Continuous") ),
ycols= ColList(" Character ", MinCol( 1 ), DataType("Character"), modeling type("Nominal") ),
);
xvar =cd["xcols"];
yvar =cd["ycols"];
xvar=xvar[1];
yvar=yvar[1];
dt << new column("check",, formula(If(Is Missing(yvar),.,xvar) ) );
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleNous aurions besoin de voir plus de JSL qui crée le script pour donner une meilleure réponse, mais
{"LOA (QC1007AI),%"}
est une liste d'une chaîne entre guillemets. (Les accolades forment une liste.) Vous pouvez retirer l'élément de la liste et être un peu plus proche
colNames = {"LOA (QC1007AI),%"};
theColumnName = colnames[1];
print(theColumnName);
Vous devrez créer une colonne à partir du nom de la colonne pour la plupart des utilisations.
col = column( dt, theColumnName );
la fonction de colonne recherchera le nom dans la table de données et renverra la colonne.
Je pense que vous avez peut-être utilisé une fonction qui renvoie les noms de colonnes plutôt qu'une fonction qui renvoie des colonnes. Il y a un bon poste http://www.pega-analytics.co.uk/blog/column-references/ discuter de certaines de ces questions.
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleSalut gianpaolo_polsi,
Merci pour le script, je pense que je peux l'utiliser à d'autres fins, cependant, cela ne résout pas mon problème :If( Is Missing( {"Status (LOA)"} ),
.,
{"LOA (QC1007AI),%"}
)
Je ne comprends pas pourquoi j'obtiens ces marques " " dans ma formule lorsque je la scripte.Re : Comment supprimer les guillemets dans un nom de variable dans une formuleunderscore pourrait être un meilleur choix que deux-points car le deux-points est un opérateur.
Re : Comment supprimer les guillemets dans un nom de variable dans une formuleBonjour Sop
essayez ce code dans la table de données avant d'appliquer des formules
// code to replace any special JMP character with single char " : "
For(i = 1, i <= N Col(dt), i++,
Column(dt, i) << set name(Regex(Column(dt, i) << get name, "\W", ":", GLOBALREPLACE))
);