番号がありませんなど。次の JSL スニペットは、My_Graphs リストをチェックして i 行目が数値であるかどうかを判断し、2 つのことのいずれかを実行します (列 6 は数値と "." で構成されます)。 IF の最初の部分は機能します。チャートの最小値を LCL の 1.2 に設定し、プロットを描画します。 ただし、LCLが「.」の場合は、 LCL を 0 に設定するわけではありません。 すぐ下は列 6 の最初の 6 行です。
。
0.25
-2
-0.018
。
0.25
もし(番号です(番号( My_Graphs [ 6 ][私])) 、
(プロット<<急送(
{ 「...の変動チャート」 } 、
「2」 、
スケールボックス、
{分(番号( My_Graphs [ 6 ][私]) * 1.2 ) 、
参照線の追加(番号( My_Graphs [ 6 ][私]) 、点在、 "赤" 、 「LCL=」 || My_Graphs [ 6 ][私] 、 2 ) 、
メジャーグリッドを表示( 1 )})
) 、
(プロット<<急送(
{ 「...の変動チャート」 } 、
「2」 、スケールボックス、 {分( 0 )})
)
) ; //次の場合は終了
Re: 番号がありませんなどご意見ありがとうございます。前回の回答では少しわかりにくかったと思いますが、リストの文字列を num に変換すると、Is Missing 関数は期待どおりに動作しました。
Re: 番号がありませんなど
@カルムストロ書きました:
次のコードを実行すると、次の結果が得られます。
のために(私= 1 、私<=番号、私++、
見せる( My_Graphs [ 6 ][私]) ;
) ;
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] = ".";
引用符は、値が次のとおりであることを示します。文字列。 したがって、次を使用して数値に変換する必要があります。数値()関数を使用するには不足している()関数。
したがって、次のようになります。
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
それはあなたがもともと持っていたものに本当に近いものです。
あるいは、テキスト文字列と比較することもできます。 「。」このような:
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: 番号がありませんなどKev - この件については職場で話しましょう...しかし、私はあなたの問題を理解していると思います。
JMP は、欠落している数値を数値として扱います。 したがって、以下のコードを実行すると、num_list のすべての要素に対して「数値です」が返されます。
数値リスト = { 。 、 0.25 、- 2 、- 0.018 、 。 、 0.25};
のために(i= 1 ,i<=ナイアイテム(num_list)、i++、もし( IsNumber (num_list[i])、印刷する( 「それは数字です」 )、印刷する( 「数字じゃないよ」 )) );
代わりに、欠落しているものを最初に処理するように if 条件を変更し、次に isnumber、その後に catch 式を変更することをお勧めします。
数値リスト = { 。 、 0.25 、- 2 、- 0.018 、 。 、 0.25 };
のために(i= 1 ,i<=ナイアイテム(num_list)、i++、もし(不足している(num_list[i])、印刷する( 「行方不明です」 )、 IsNumber (num_list[i])、印刷する( 「それは数字です」 )、印刷する( 「今何をしたらいいのか分からない」 )));
Re: 番号がありませんなど次のコードを実行すると、次の結果が得られます。
のために(私= 1 、私<=番号、私++、
見せる( My_Graphs [ 6 ][私]) ;
) ;
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] = ".";
次のコードを実行すると、次の結果が得られます。
のために(私= 1 、私<=番号、私++、
見せる(不足している( My_Graphs [ 6 ][私])) ;
) ;
欠落しています(My_Graphs[6][i]) = 0;
欠落しています(My_Graphs[6][i]) = 0;
欠落しています(My_Graphs[6][i]) = 0;
欠落しています(My_Graphs[6][i]) = 0;
欠落しています(My_Graphs[6][i]) = 0;
次のコードを実行すると、次の結果が得られます。
のために(私= 1 、私<=番号、私++、
見せる(不足している(番号( My_Graphs [ 6 ][私]))) ;
) ;
欠落しています(Num(My_Graphs[6][i])) = 1;
欠落しています(Num(My_Graphs[6][i])) = 0;
欠落しています(Num(My_Graphs[6][i])) = 0;
欠落しています(Num(My_Graphs[6][i])) = 0;
欠落しています(Num(My_Graphs[6][i])) = 1;
Is Missing 関数のためにリスト文字列を num に変換する必要があるようです。
Re: 番号がありませんなどSummarize で作成したリストから値を渡していますが、これは引用符で囲まれた値ですか?
Re: 番号がありませんなどIs Missing() 関数が機能することがわかっています。 例えば:
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] = .;
したがって、それに渡すデータ/値を含むものでなければなりません。 だからこそ、上で提案した Show() が役立つのです。
If() の else 節にもデバッグ用の "Show()" を入れて、そこに入ったかどうかを表示する必要があるかもしれません。
Re: 番号がありませんなど!Is Missing の false 条件は評価されないようですが、エラーは発生しません。
値がある場合は最小値を更新し、グラフの線を追加しますが、if の false 条件の場合は最小値を 0 に設定しません。
Re: 番号がありませんなど効果がないと言うとき、具体的には何を意味しますか? エラーが発生していますか? グラフが正しく更新されていませんか? 全くない?
を追加していただけますか
Show (My_Graphs [6][i]);
条件の直前に値が何であるかを確認しますか?
Re: 番号がありませんなどこれでうまくいくはずですが、うまくいきませんか?
もし( !不足している( My_Graphs [ 6 ][私]) 、
(プロット<<急送(
{ 「変動チャート...」 } 、
「2」 、
スケールボックス、
{分(番号( My_Graphs [ 6 ][私]) * 1.2 ) 、
参照線の追加(番号( My_Graphs [ 6 ][私]) 、点在、 "赤" 、 「LCL=」 || My_Graphs [ 6 ][私] 、 2 ) 、
メジャーグリッドを表示( 1 )})
) 、
(プロット<<急送(
{ 「変動チャート...」 } 、
「2」 、スケールボックス、 {分( 0 )})
)
) ; //次の場合は終了
Re: 番号がありませんなど
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") = .;
欠損値は数値であり、それをテストするには isMissing 関数が必要です。 欠損値との比較では、両方の値が欠損している場合でも、0 または 1 ではなく欠損が返されます。