Fehlt die Nummer usw.Ich habe den folgenden JSL-Ausschnitt, der die My_Graphs-Liste überprüft, um festzustellen, ob die i-te Zeile eine Zahl ist oder nicht, und eines von zwei Dingen ausführt (Spalte 6 besteht aus Zahlen und „.“). Der erste Teil des IF funktioniert – er setzt den Chart-Mindestwert auf 1,2 des LCL und zeichnet den Plot. Wenn die LCL jedoch „.“ ist. Es setzt die LCL nicht auf 0. Unmittelbar darunter befinden sich die ersten 6 Reihen von Spalte 6.
.
0,25
-2
-0,018
.
0,25
Wenn ( Ist Nummer ( Num ( Meine_Grafiken [ 6 ][ ich ])) ,
( Handlung << versenden (
{ „Variabilitätsdiagramm für…“ } ,
„2“ ,
ScaleBox ,
{ Mindest ( Num ( Meine_Grafiken [ 6 ][ ich ]) * 1.2 ) ,
Referenzlinie hinzufügen ( Num ( Meine_Grafiken [ 6 ][ ich ]) , Gepunktet , "Rot" , "LCL = " || Meine_Grafiken [ 6 ][ ich ] , 2 ) ,
Hauptraster anzeigen ( 1 )})
) ,
( Handlung << versenden (
{ „Variabilitätsdiagramm für…“ } ,
„2“ , ScaleBox , { Mindest ( 0 )})
)
) ; //ende wenn
Betreff: IST DIE NUMMER FEHLT usw.Vielen Dank für Ihre Eingabe. Ich glaube, ich war in meiner letzten Antwort etwas unklar, aber nachdem ich die Zeichenfolgen aus der Liste in „Num“ konvertiert hatte, verhielt sich die Funktion „Ist fehlt“ wie erwartet.
Betreff: IST DIE NUMMER FEHLT usw.
@karmstro schrieb:
Wenn ich den folgenden Code ausführe, erhalte ich:
Für ( ich = 1 , ich <= Nummer , ich ++,
zeigen ( Meine_Grafiken [ 6 ][ ich ]) ;
) ;
My_Graphs[6][i] = ".";
My_Graphs[6][i] = "0,25";
My_Graphs[6][i] = "-2";
My_Graphs[6][i] = "-0.018";
My_Graphs[6][i] = ".";
Die Anführungszeichen geben an, dass Ihre Werte vorhanden sind Zeichenketten . Daher müssen Sie sie mit dem in Zahlen umwandeln Num() Funktion, um die zu verwenden Wird vermisst() Funktion.
So sollte es sein:
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
Das kommt dem, was Sie ursprünglich hatten, sehr nahe.
Alternativ können Sie auch mit der Textzeichenfolge vergleichen "." so was:
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
Betreff: IST DIE NUMMER FEHLT usw.Kev – lass uns in der Arbeit darüber reden ... Aber ich glaube, ich verstehe dein Problem.
JMP behandelt eine fehlende Zahl als Zahl. Wenn Sie also den folgenden Code ausführen, wird für jedes Element von num_list „Es ist eine Zahl“ zurückgegeben.
num_list = { . , 0,25 ,- 2 ,- 0,018 , . , 0,25};
für (ich= 1 ,i<= nitems (num_list),i++, Wenn ( Ist Nummer (num_list[i]), Drucken ( „Es ist eine Zahl“ ), Drucken ( „Es ist keine Zahl“ )) );
Stattdessen schlage ich vor, dass Sie Ihre if-Bedingung ändern, um zuerst die fehlende Bedingung zu behandeln, gefolgt von is number und dann einem Catch-Ausdruck.
num_list = { . , 0,25 ,- 2 ,- 0,018 , . , 0,25 };
für (ich= 1 ,i<= nitems (num_list),i++, Wenn ( Wird vermisst (num_list[i]), Drucken ( "Es fehlt" ), Ist Nummer (num_list[i]), Drucken ( „Es ist eine Zahl“ ), Drucken ( „Ich weiß nicht, was ich jetzt tun soll“ )));
Betreff: IST DIE NUMMER FEHLT usw.Wenn ich den folgenden Code ausführe, erhalte ich:
Für ( ich = 1 , ich <= Nummer , ich ++,
zeigen ( Meine_Grafiken [ 6 ][ ich ]) ;
) ;
My_Graphs[6][i] = ".";
My_Graphs[6][i] = "0,25";
My_Graphs[6][i] = "-2";
My_Graphs[6][i] = "-0.018";
My_Graphs[6][i] = ".";
Wenn ich den folgenden Code ausführe, erhalte ich:
Für ( ich = 1 , ich <= Nummer , ich ++,
zeigen ( Wird vermisst ( Meine_Grafiken [ 6 ][ ich ])) ;
) ;
Fehlt(My_Graphs[6][i]) = 0;
Fehlt(My_Graphs[6][i]) = 0;
Fehlt(My_Graphs[6][i]) = 0;
Fehlt(My_Graphs[6][i]) = 0;
Fehlt(My_Graphs[6][i]) = 0;
Wenn ich den folgenden Code ausführe, erhalte ich:
Für ( ich = 1 , ich <= Nummer , ich ++,
zeigen ( Wird vermisst ( Num ( Meine_Grafiken [ 6 ][ ich ]))) ;
) ;
Fehlt(Num(My_Graphs[6][i])) = 1;
Fehlt(Num(My_Graphs[6][i])) = 0;
Fehlt(Num(My_Graphs[6][i])) = 0;
Fehlt(Num(My_Graphs[6][i])) = 0;
Fehlt(Num(My_Graphs[6][i])) = 1;
Es sieht so aus, als müssten die Listenzeichenfolgen für die Funktion „Ist fehlt“ in „num“ umgewandelt werden.
Betreff: IST DIE NUMMER FEHLT usw.Ich übergebe ihm Werte aus einer Liste, die mit Summarize erstellt wurde. Welche Werte sind Anführungszeichen?
Betreff: IST DIE NUMMER FEHLT usw.Wir wissen, dass die Funktion Is Missing() funktioniert. Zum Beispiel:
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] = .;
Es muss also etwas mit den Daten/Werten zu tun haben, die Sie ihm übergeben. Deshalb wird das oben vorgeschlagene Show() helfen.
Vielleicht sollten Sie auch ein Debugging-„Show()“ in die else-Klausel von If() einfügen, um zu zeigen, ob es dort angekommen ist oder nicht.
Betreff: IST DIE NUMMER FEHLT usw.Es scheint, dass die falsche Bedingung für !Is Missing nicht ausgewertet wird, aber es liegt kein Fehler vor.
Es aktualisiert den Mindestwert und fügt die Diagrammlinie hinzu, wenn ein Wert vorhanden ist, setzt jedoch den Mindestwert nicht auf 0, wenn die Bedingung falsch ist.
Betreff: IST DIE NUMMER FEHLT usw.Was genau meinen Sie, wenn Sie sagen, dass es nicht funktioniert? Erhalten Sie eine Fehlermeldung? Wird die Grafik falsch aktualisiert? Gar nicht?
Können Sie ein hinzufügen?
Show (My_Graphs [6][i]);
kurz vor Ihrer Bedingung, um zu sehen, was der Wert ist?
Betreff: IST DIE NUMMER FEHLT usw.Das sollte dann funktionieren, aber es funktioniert nicht?
Wenn ( ! Wird vermisst ( Meine_Grafiken [ 6 ][ ich ]) ,
( Handlung << versenden (
{ „Variabilitätsdiagramm…“ } ,
„2“ ,
ScaleBox ,
{ Mindest ( Num ( Meine_Grafiken [ 6 ][ ich ]) * 1.2 ) ,
Referenzlinie hinzufügen ( Num ( Meine_Grafiken [ 6 ][ ich ]) , Gepunktet , "Rot" , "LCL = " || Meine_Grafiken [ 6 ][ ich ] , 2 ) ,
Hauptraster anzeigen ( 1 )})
) ,
( Handlung << versenden (
{ „Variabilitätsdiagramm…“ } ,
„2“ , ScaleBox , { Mindest ( 0 )})
)
) ; //ende wenn
Betreff: IST DIE NUMMER FEHLT usw.
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") = .;
Fehlende Werte sind Zahlen und erfordern die Funktion isMissing, um sie zu testen. Ein Vergleich mit einem fehlenden Wert ergibt „fehlend“ und nicht „0“ oder „1“, selbst wenn beide Werte fehlen.