Impossible d'exécuter la logique booléenne à l'aide du script jmp sur la formule de tableSalut,
J'essaie d'exécuter un script simple qui sélectionnera puis masquera et exclura les points dont la distance radiale est supérieure à 100 mm par rapport au centre.
Pour simplifier le débogage, j'ai divisé cela en deux scripts : le premier génère une colonne avec la formule de distance radiale Radial = (x^2 + y^2)^(1/2) et le second évalue cette formule, en sélectionnant et en masquant les lignes où Radial > 100.
Malheureusement, cela ne fonctionne pas. Pour une raison très étrange, l'évaluation ne fonctionne sur cette formule que jusqu'à une certaine valeur. Radial > (tout ce qui est supérieur à 30) sélectionne toutes les lignes.
Je vois deux solutions :
1) Écrivez les valeurs dans la colonne Radial, pas dans la formule elle-même. (Les valeurs sont évaluées correctement, la formule ne l'est pas). Je ne sais pas comment faire cela.
2) Comprendre et corriger le problème afin que la formule puisse être évaluée par rapport à une valeur supérieure à 30.
Une réponse sous forme de script ou une explication interactive serait acceptable. J'aimerais résoudre ce problème et en tirer des leçons.
Merci!
Dave
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
Fusion et nettoyage des donnéesRe : Impossible d'exécuter la logique booléenne à l'aide du script jmp sur la formule de la tableJe fais un peu de devinettes, mais je pense que votre problème avec Radial vs Radial 1 est que vous ne définissez pas correctement la portée de votre variable de colonne.Dans votre déclaration
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
vous devez placer un ":" devant les noms de colonne :Radial 1 et :Pits Only.La raison pour laquelle le script fonctionne avec Radial 1 est qu'il n'y a pas de variable de mémoire appelée Radial 1, avec laquelle JMP peut être confondu.Je suppose qu'à un moment donné de vos tentatives de codage, vous avez accidentellement créé une variable de mémoire de Radial, donc lorsque vous avez spécifié
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP remplaçait la valeur de Radial par la valeur des variables de mémoire, et non la valeur de la colonne Radial.
Re : Impossible d'exécuter la logique booléenne à l'aide du script jmp sur la formule de la tableMerci d'avoir répondu Jef.
Coller la dernière ligne de votre script dans le mien n'a pas résolu le problème. Cependant, j'ai pu trouver une solution en changeant le nom de la colonne en "Radial 1" et en ajoutant une ligne avec Eval Formula à la fin. Je ne sais pas pourquoi cela fonctionne. La table de données est d'environ 1 300 lignes avec 15 colonnes, chaque nombre a une largeur de 10 à 12.
Les deux scripts suivants fonctionnent. Je les colle dans leur intégralité. Les autres lignes évaluent la profondeur et la distribution des fosses.
Une idée pourquoi les modifications ont fonctionné? J'ai été à cela pendant la majeure partie de la journée.
Script 1 : Créer des colonnes "Pits Only" et "Radial 1"
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
Script 2 : Masquer et exclure les lignes avec Pits Only > 10 ou Radial 1 > 100 ou Radial 1 < 30
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
Re : Impossible d'exécuter la logique booléenne à l'aide du script jmp sur la formule de la tableJe crains d'avoir du mal à reproduire un problème ici. Voici le script que j'ai utilisé pour tester.
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
Nous allons donc avoir besoin d'un peu plus de détails sur votre script et votre table de données.
Quelle est la taille de votre table de données ? Que fait d'autre votre script ?
Re : Impossible d'exécuter la logique booléenne à l'aide du script jmp sur la formule de la tablescript de création du poteau radial
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
script pour évaluer la formule radiale
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;