scripts d'applications... Regrouper par, variableJe crée une application qui permet à l'utilisateur de sélectionner quelques options avant d'exécuter un script qui implique quelques requêtes SQL puis de créer des graphiques... rien de bien fou.
Un contrôle de bouton radio est utilisé pour définir la valeur d'une variable nommée "type".Je veux que l'une des options "ajuster où" pour un graphique bivarié soit le contenu de cette variable...
Bivariate(
Y( :Current),
X( :Voltage),
Show Points( 0 ),
Fit Where(
:type == "cell",
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:type == type, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :CellID)
);
Le graphique génère correctement, mais ce qui est ennuyeux, c'est que le graphique résultant indique "adapter chaque type de valeur == type".Comment puis-je lui faire afficher le contenu de la variable qui a été utilisée à la place de son nom ??J'ai déjà essayé quelques options, notamment "eval(type)".

Re : script d'application... Regrouper par, variableMerci beaucoup pour les réponses rapides. j'ai oublié de le copier dans mon exemple mais le tout début de mon script commençait par "les noms par défaut sont ici (1);" Ne pensez pas que l'endroit où cette commande apparaît dans le script est important, tant qu'elle se trouve avant la fonction concernée.
J'ai d'abord essayé le code de Jim et cela a produit le même problème que mon script original.La valeur 13 n'était pas affichée sous le graphique, mais "age==age".remarque : j'utilise JMP 12

Comme j'utilise un nom de variable qui ne correspond pas à une colonne de mes tables, je ne pense pas rencontrer le problème de JMP essayant d'attribuer les valeurs de colonne comme mentionné par gzmorgan0.
L'approche consistant à utiliser « grouper par » au lieu de « adapter où » a fait l'affaire.Depuis que j'ai copié ce script à partir d'un bivarié créé via les options de menu "regrouper par", je ne comprends pas pourquoi il a utilisé "adapter où" à la place.Mais c'est un autre problème pour un autre jour.Merci pour l'aide.
Re : script d'application... Regrouper par, variableJim a raison.
Sans noms par défaut à ici (1), toutes les variables sont globales. Le guide de script JMP indique
"Quand une variable globale et une colonne portent le même nom,...Dans cette situation, vous devez définir le nom de la colonne."
En fait, lorsque j'exécute le script, j'obtiens l'erreur
Impossible de définir la valeur de la colonne « âge » car le numéro de ligne (-1) n'est pas valide.
Puisqu'il ne s'agit pas de ::age, JMP pense que l'instruction age=13 tente d'attribuer des valeurs à la colonne nommée age.Names Default To Here(1) rend la variable "age" locale et résout ce conflit. Cependant, je vous recommande fortement d'utiliser les noms par défaut ici (1) et utilisez un nom différent pour la saisie de l'utilisateur, comme _age ou usr_val.Je crois que les collisions de noms (conflits, alias cadrage) sont la deuxième erreur de script la plus importante après la syntaxe et les fautes de frappe.
Le script ci-dessous est une légère modification de celui de Jim :
- _age se voit attribuer une valeur
- une alternative à Fit Where().La sélection des valeurs à utiliser, puis l'utilisation de Group By() fourniront le nom de chaque valeur Group By.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
_age=13;
biv = dt << Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
where(:age==12 | :age==_age),
Group By(:age),
Fit Each Value( {Report(0)}),
By(:sex)
);
biv << ( Curve[1] << Line Color ( {0, 0, 255 } ) );
biv << ( Curve[2] << Line Color ( {213, 72, 255 } ) );
Re : script d'application... Regrouper par, variableLe problème semble être un problème de portée.Je n'ai pas pu exécuter votre script avec succès jusqu'à ce que j'ajoute
Names Default to Here( 1 );
Voici votre script avec les noms de colonnes pointant vers la table de données Big Class.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
age=13;
Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
Fit Where(
:age == 12,
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:age == age, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :sex)
);