JMP Scripting - Comment changer la valeur d'une "cellule"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut,
Je me demande comment le scripter pour changer la valeur d'une "cellule" qui est le résultat d'un calcul dans le script.
Plus précisément, je veux pouvoir changer la valeur d'une cellule en "0" si la valeur calculée est négative tout en laissant toutes les autres "cellules" seules.
Même s'il doit être dans une nouvelle colonne, c'est très bien. Par exemple, si j'ai ma colonne de valeurs calculées et que celle qui m'intéresse est négative, créez une nouvelle colonne qui dira simplement "0" pour cette "cellule".
Merci d'avance.
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"bon mot....
dt[dt<< obtenir des lignes où(:ageval < 14)] = 0 ;
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Pour ce scénario, vous pouvez utiliser la propriété de colonne « Range Check ». De cette façon, la table contient les métadonnées et vous n'avez pas besoin d'une autre table :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(2);
Column(dt, "age") << rangeCheck( !LT( 13 ) );
Column(dt, "weight") << rangeCheck( LT( 100 ) );Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Vous devez modifier la formule pour vérifier la valeur que vous souhaitez modifier, puis utiliser une instruction conditionnelle dans la formule pour la remplacer par la valeur souhaitée.
// Sample formula
:A + :B;
If( isMissing(:A+:B) == 1, 0 );
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Salut Jim,
Quelle serait la forme de ce script si vous aviez le "else" et la troisième alternative tels que définis dans la commande IF ?
Meilleur,
K
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Ian,
J'aime la méthode matricielle, mais comment faire si je veux nettoyer plusieurs colonnes pour lesquelles les conditions de nettoyage sont différentes.
par exemple en grande classe
age -> configurer toutes les cellules avec une valeur <13 comme vide
hauteur -> configurer toutes les cellules avec une valeur> 100 comme vide
en supposant que j'ai une table de référence pour toutes les conditions de colonne.
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Peux-tu poster la formule ?Comme txnelson dit que vous pouvez simplement faire la partie vérification de la formule.
Pour poster la formule :
1. Ouvrez votre ensemble de données et cliquez sur le signe + à côté de la colonne de formule.
2. Double-cliquez dans la fenêtre de formule.Cela changera la fenêtre pour afficher le code JSL pour la formule
3. Copiez le code JSL et postez-le sur ce forum.
La nouvelle formule ressemblera à ceci :
tmp = mettre - original - formule - ici ;
si ( tmp < 0 , 0 , tmp ) ;
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"vous pouvez certainement faire de la vérification conditionnelle une partie de la formule
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Serait-il judicieux d'intégrer le test dans la formule ?
Si ( Correspondre ( ... ) < 0 ,
0 ,
Correspondre ( ... )
)
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Merci à tous.
Ce que j'essaie de faire, c'est de changer la valeur d'une cellule d'une colonne contenant une formule.
La colonne Big Class "Age" ne provient pas d'une formule, donc toutes ces suggestions fonctionnent pour modifier la valeur d'une cellule.
J'ai une colonne, appelez-la "Test", qui utilise la formule de correspondance. Existe-t-il un moyen de le scripter pour changer la valeur d'une cellule de cette colonne à zéro si la formule de correspondance la calcule comme négative? Je veux pouvoir forcer la valeur à zéro si elle est négative.
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Je vais faire un pas de plus.Plusieurs fois, j'ai fait des choses similaires à celles que Ian a montrées.Extraire les données de la table de données et utiliser des opérateurs matriciels.Cela a un avantage de performance sur de grandes quantités de données.Cependant, ce qui suit est une technique que j'ai utilisée de nombreuses fois, car elle est très rapide et ne nécessite pas d'extraction à partir de la table de données.
Noms par défaut à ici( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Try( dt:Age[dt << obtenir des lignes où( :Age < 14 )] = 0 );
La fonction "Try" protège simplement contre le cas où Get Rows Where pourrait renvoyer une matrice vide et l'affectation générerait une erreur.
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Et en s'appuyant sur la réponse de Jim, il est généralement considéré comme une bonne pratique d'éviter les boucles si possible :
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get the values of age into a vector
ageVals = dt:Age << getValues;
// Find the location of age values less than 14
ageValsLessThan14 = Loc(ageVals < 14);
// Set these values to zero
ageVals[ageValsLessThan14] = 0;
// Put the new values back into the column
dt:Age << setValues(ageVals);
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Rébecca,
Je me demande si ce que vous demandez doit être expliqué à un niveau plus basique que ce que Justin a montré.Son exemple vous donne une réponse, cependant, la façon dont vous avez décrit votre problème, je peux spéculer sur des scénarios où les composants de votre instruction conditionnelle peuvent provenir de sources autres que la table de données actuelle.
L'un des principes de base d'une table de données JMP est que toute cellule est directement adressable.En utilisant le tableau de données de la réponse de Justin, toutes les cellules sont accessibles en spécifiant simplement le nom de la colonne et le numéro de ligne.
:Age[1]
pointe vers la valeur des premières lignes pour la colonne Age.Une façon plus correcte de le référencer consiste à utiliser le pointeur de table de données (espace de noms de table de données).Donc, si le pointeur vers la table de données tel que spécifié dans la réponse de Justin est "dt", alors
dt:Age[1]
est la forme la plus appropriée.
En prenant l'exemple de Justin, nous pourrions en fait modifier les valeurs en place et ne pas avoir à créer une nouvelle colonne.Le code suivant le fera
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For( I = 1, I <= N Rows( dt ), I++,
if(dt:Age < 14,
dt:Age = 0
);
);
Re : JMP Scripting - Comment modifier la valeur d'une "cellule"Voici un exemple de modification conditionnelle d'une cellule lors de la copie dans une nouvelle colonne :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = dt << New Column( "New Column", Formula( If( :age < 14, 0, :age ) ) );
Dans votre cas, vous modifieriez la condition pour qu'elle soit inférieure à zéro plutôt que 14.