EST-CE QUE LE NUMÉRO MANQUE, etc.J'ai l'extrait suivant de JSL qui vérifie la liste My_Graphs pour déterminer si la ième ligne est un nombre ou non et fait l'une des deux choses suivantes (la colonne 6 est composée de nombres et "."). La première partie du IF fonctionne - elle définit le graphique min à 1,2 le LCL et dessine le tracé. Cependant, si le LCL est "." il ne définit pas le LCL sur 0. Immédiatement en dessous se trouvent les 6 premières rangées de la colonne 6.
.
0,25
-2
-0,018
.
0,25
si ( Est-ce un numéro ( num ( Mes_Graphiques [ 6 ][ je ])) ,
( Parcelle << expédition (
{ "Tableau de variabilité pour..." } ,
"2" ,
Boîte à échelle ,
{ Min. ( num ( Mes_Graphiques [ 6 ][ je ]) * 1.2 ) ,
Ajouter une ligne de référence ( num ( Mes_Graphiques [ 6 ][ je ]) , Pointé , "Rouge" , "LCL = " || Mes_Graphiques [ 6 ][ je ] , 2 ) ,
Afficher la grille principale ( 1 )})
) ,
( Parcelle << expédition (
{ "Tableau de variabilité pour..." } ,
"2" , Boîte à échelle , { Min. ( 0 )})
)
) ; //fin si
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Merci pour votre contribution - je suppose que j'étais un peu flou dans ma dernière réponse, mais une fois que j'ai converti les chaînes de la liste en num, la fonction Is Missing s'est comportée comme prévu.
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.
@karmstro a écrit:
Quand j'exécute le code suivant j'obtiens :
Pour ( je = 1 , je <= nombre , je ++,
montrer ( Mes_Graphiques [ 6 ][ je ]) ;
) ;
Mes_Graphes[6][i] = ".";
Mes_Graphes[6][i] = "0,25";
Mes_Graphes[6][i] = "-2";
Mes_Graphes[6][i] = "-0,018";
Mes_Graphes[6][i] = ".";
Les guillemets indiquent que vos valeurs sont chaînes de caractères . En tant que tel, vous devrez les convertir en nombres à l'aide du Nombre() fonction afin d'utiliser la Est manquant() fonction.
Cela devrait donc être :
if(Is Missing(num(My_Graphs [6][i])),
(Plot << dispatch(
{"Variability Chart for..."},
"2",
ScaleBox,
{Min(num(My_Graphs [6][i]) * 1.2 ),
Add Ref Line( num(My_Graphs [6][i]), Dotted, "Red", "LCL = " || My_Graphs [6][i] , 2 ),
Show Major Grid( 1 )})
),
(Plot << dispatch(
{"Variability Chart for..."},
"2", ScaleBox, {Min(0)})
)
);//end if
Ce qui est vraiment proche de ce que vous aviez à l'origine.
Alternativement, vous pouvez comparer avec la chaîne de texte "." comme ça:
if(My_Graphs [6][i] == ".",
(Plot << dispatch(
{"Variability Chart for..."},
"2",
ScaleBox,
{Min(num(My_Graphs [6][i]) * 1.2 ),
Add Ref Line( num(My_Graphs [6][i]), Dotted, "Red", "LCL = " || My_Graphs [6][i] , 2 ),
Show Major Grid( 1 )})
),
(Plot << dispatch(
{"Variability Chart for..."},
"2", ScaleBox, {Min(0)})
)
);//end if
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Kev - discutons-en au travail... Mais je pense que je vois votre problème.
JMP traite un numéro manquant comme un numéro. Ainsi, lorsque vous exécutez le code ci-dessous, il renvoie "C'est un nombre" pour chaque élément de num_list.
liste_num = { . , 0,25 ,- 2 ,- 0,018 , . , 0,25} ;
pour (je= 1 ,je<= articles (num_list),i++, si ( EstNuméro (num_list[i]), Imprimer ( "C'est un numéro" ), Imprimer ( "Ce n'est pas un numéro" )) );
Ce que je vous suggère de faire à la place, c'est de modifier votre condition if pour gérer d'abord celle qui manque, suivie de son numéro, puis d'une expression catch.
liste_num = { . , 0,25 ,- 2 ,- 0,018 , . , 0,25 } ;
pour (je= 1 ,je<= articles (num_list),i++, si ( Est manquant (num_list[i]), Imprimer ( "Ça a disparu" ), EstNuméro (num_list[i]), Imprimer ( "C'est un numéro" ), Imprimer ( "Je ne sais pas quoi faire maintenant" )));
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Quand j'exécute le code suivant j'obtiens :
Pour ( je = 1 , je <= nombre , je ++,
montrer ( Mes_Graphiques [ 6 ][ je ]) ;
) ;
Mes_Graphes[6][i] = ".";
Mes_Graphes[6][i] = "0,25";
Mes_Graphes[6][i] = "-2";
Mes_Graphes[6][i] = "-0,018";
Mes_Graphes[6][i] = ".";
Quand j'exécute le code suivant j'obtiens :
Pour ( je = 1 , je <= nombre , je ++,
montrer ( Est manquant ( Mes_Graphiques [ 6 ][ je ])) ;
) ;
Est manquant (My_Graphs[6][i]) = 0;
Est manquant (My_Graphs[6][i]) = 0;
Est manquant (My_Graphs[6][i]) = 0;
Est manquant (My_Graphs[6][i]) = 0;
Est manquant (My_Graphs[6][i]) = 0;
Quand j'exécute le code suivant j'obtiens :
Pour ( je = 1 , je <= nombre , je ++,
montrer ( Est manquant ( num ( Mes_Graphiques [ 6 ][ je ]))) ;
) ;
Est manquant(Num(My_Graphs[6][i])) = 1;
Est manquant (Num (My_Graphs [6] [i])) = 0;
Est manquant (Num (My_Graphs [6] [i])) = 0;
Est manquant (Num (My_Graphs [6] [i])) = 0;
Est manquant(Num(My_Graphs[6][i])) = 1;
Il semble qu'il faille convertir les chaînes de la liste en num pour la fonction Is Missing.
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Je lui transmets les valeurs d'une liste créée avec Summarize qui sont des valeurs citées ?
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Nous savons que la fonction Is Missing() fonctionne. Par exemple:
For( i = 1, i <= N Items( x ), i++,
Print( "starting iteration " || Char( i ) );
If( !Is Missing( x[i] ),
Show( x[i] ),
Print( "x is missing" );
Show( x[i] );
);
);<BR />
/*:
"starting iteration 1"
x[i] = 1;
"starting iteration 2"
"x is missing"
x[i] = .;
Il doit donc s'agir de quelque chose avec les données/valeurs que vous lui transmettez. C'est pourquoi le Show() que j'ai suggéré ci-dessus vous aidera.
Peut-être devriez-vous également mettre un "Show()" de débogage dans la clause else de If() pour montrer s'il y est entré ou non.
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Il semble qu'il n'évalue pas la condition fausse pour !Is Missing mais il n'y a pas d'erreur.
Il met à jour le min et ajoute la ligne du graphique lorsqu'il y a une valeur, mais ne définit pas le min sur 0 en cas de fausse condition de if.
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Quand tu dis que ça ne marche pas, que veux-tu dire exactement ? Obtenez-vous une erreur ? Le graphique est-il mal mis à jour ? Pas du tout?
Pouvez-vous ajouter un
Show (My_Graphs [6][i]);
juste avant votre conditionnel pour voir quelle est la valeur ?
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.Cela devrait alors fonctionner, mais ce n'est pas le cas ?
si ( ! Est manquant ( Mes_Graphiques [ 6 ][ je ]) ,
( Parcelle << expédition (
{ "Graphique de variabilité..." } ,
"2" ,
Boîte à échelle ,
{ Min. ( num ( Mes_Graphiques [ 6 ][ je ]) * 1.2 ) ,
Ajouter une ligne de référence ( num ( Mes_Graphiques [ 6 ][ je ]) , Pointé , "Rouge" , "LCL = " || Mes_Graphiques [ 6 ][ je ] , 2 ) ,
Afficher la grille principale ( 1 )})
) ,
( Parcelle << expédition (
{ "Graphique de variabilité..." } ,
"2" , Boîte à échelle , { Min. ( 0 )})
)
) ; //fin si
Re : EST-CE QUE LE NUMÉRO MANQUE, etc.
x=.;
show( x, isNumber(1), isNumber(0), isNumber(.), isMissing(0), isMissing(.), if( x==x, "yes", "no") )
x = .;
Is Number(1) = 1;
Is Number(0) = 1;
Is Number(.) = 1;
Is Missing(0) = 0;
Is Missing(.) = 1;
If(x == x, "yes", "no") = .;
Les valeurs manquantes sont des nombres et nécessitent que la fonction isMissing les teste. Une comparaison avec une valeur manquante renvoie manquant, et non 0 ou 1, même si les deux valeurs sont manquantes.