編號缺失等。我有以下 JSL 片段,它檢查 My_Graphs 列表以確定第 i 行是否是數字,並執行兩件事之一(第 6 列由數字和“.”組成)。 IF 的第一部分起作用 - 它將圖表最小值設置為 1.2 LCL 並繪製繪圖。 但是,如果拼箱是“。”它不會將 LCL 設置為 0。 下面是第 6 欄的前 6 行。
。
0.25
-2
-0.018
。
0.25
如果(是數字(編號(我的圖表[ 6 ][我])) ,
(陰謀<<派遣(
{ “……的變異圖” } ,
“2” ,
比例盒,
{最小(編號(我的圖表[ 6 ][我]) * 1.2 ) ,
添加參考線(編號(我的圖表[ 6 ][我]) ,點狀, “紅色的” , “拼箱=” ||我的圖表[ 6 ][我] , 2 ) ,
顯示主要網格( 1 )})
) ,
(陰謀<<派遣(
{ “……的變異圖” } ,
“2” ,比例盒, {最小( 0 )})
)
) ; //萬一
回复:IS 號碼丟失等。感謝您的輸入 - 我想我在上次的回復中有點不清楚,但是一旦我將字符串從列表轉換為 num,Is Missing 函數就會按預期運行。
回复:IS 號碼丟失等。
@karmstro寫道:
當我運行以下代碼時,我得到:
為了(我= 1 ,我<=數字,我++,
展示(我的圖表[ 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
回复:IS 號碼丟失等。Kev - 讓我們在工作中討論一下這個問題......但我想我看到了你的問題。
JMP 將缺失的數字視為數字。 因此,當您執行下面的代碼時,它會為 num_list 的每個元素返回“It's a number”。
num_list = { 。 , 0.25 ,- 2 ,- 0.018 , 。 , 0.25};
為了(我= 1 ,i<=尼特姆斯(num_list),i++,如果(是編號(num_list[i]),打印( “這是一個數字” ),打印( “這不是一個數字” )) );
我建議您做的是更改 if 條件以首先處理丟失的條件,然後是數字,然後是一些 catch 表達式。
num_list = { 。 , 0.25 ,- 2 ,- 0.018 , 。 , 0.25 };
為了(我= 1 ,i<=尼特姆斯(num_list),i++,如果(不見了(num_list[i]),打印( “它失踪了” ),是編號(num_list[i]),打印( “這是一個數字” ),打印( “我現在不知道該怎麼辦” )));
回复:IS 號碼丟失等。當我運行以下代碼時,我得到:
為了(我= 1 ,我<=數字,我++,
展示(我的圖表[ 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 ,我<=數字,我++,
展示(不見了(我的圖表[ 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 ,我<=數字,我++,
展示(不見了(編號(我的圖表[ 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 。
回复:IS 號碼丟失等。我從使用 Summarize 創建的列表中傳遞值,哪些是帶引號的值?
回复:IS 號碼丟失等。我們知道 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()”,以顯示它是否進入那裡。
回复:IS 號碼丟失等。它似乎沒有評估 !Is Missing 的錯誤條件,但沒有錯誤。
當有值時,它會更新最小值並添加圖表線,但不會在 if 的錯誤條件下將最小值設置為 0。
回复:IS 號碼丟失等。當你說它不起作用時,你到底是什麼意思? 您收到錯誤了嗎? 圖表更新是否錯誤? 一點也不?
你可以添加一個
Show (My_Graphs [6][i]);
在你的條件之前看看值是什麼?
回复:IS 號碼丟失等。這應該可行,但事實並非如此?
如果( !不見了(我的圖表[ 6 ][我]) ,
(陰謀<<派遣(
{ “變異圖……” } ,
“2” ,
比例盒,
{最小(編號(我的圖表[ 6 ][我]) * 1.2 ) ,
添加參考線(編號(我的圖表[ 6 ][我]) ,點狀, “紅色的” , “拼箱=” ||我的圖表[ 6 ][我] , 2 ) ,
顯示主要網格( 1 )})
) ,
(陰謀<<派遣(
{ “變異圖……” } ,
“2” ,比例盒, {最小( 0 )})
)
) ; //萬一
回复:IS 號碼丟失等。
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。