编号缺失等。我有以下 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。