另一个JMP语法挑战..........::(我正在尝试正确设置IF语句的格式,并且经过无数次迭代后无法使其正常工作。 感谢任何帮助!
我有一个数据表,该表的列名为“处理步骤说明” .....数据类型字符
我在表中还有另一列称为“模块故障”,其数据类型为数字/连续数据。我使用下面的脚本段成功创建了它
我想根据“处理步骤描述”单元中的值在“模块故障”列中设置单元的值,如下所示:
工艺步骤说明..................模块故障
出厂质量检查....................... 0
单元故障.............................................................. 1
我的脚本中包含以下命令;据我所知,一切正常,除了IF语句本身
dt << New Column(“ Module Failures”);
列(“模块故障”)<<数据类型(数值,格式(“固定的十月”,1,0));
列(“模块故障”)<<建模类型(连续);
如果(处理步骤描述==“单元故障”,(“模块故障” = 1),(“模块故障” = 0));
这可能与引号有关,因为我总是对单引号和双引号规则感到困惑,但是我尝试了很多排列,但似乎没有任何效果
先感谢您
脚本编写回复:另一个JMP语法挑战..........::(日志中是否有任何消息?
您可以附加数据样本吗?
回复:另一个JMP语法挑战..........::(非常感谢你!!在您介绍的选项中,公式的实现对我来说是最直观的;我认为也许“ if”需要作为公式来实现,但是不确定。我用下面的替换为现有的脚本段。 不幸的是,它仍然只返回一个“。”在“模块故障”数据列中,因此仍然存在错误。 创建了新列,并且数据类型正确,但是似乎没有实现“如果逻辑”。
感谢您提供任何其他建议。 如果需要,我也可以提供更多信息。
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( If( :Proceess Step Description == "Unit fails", 1, 0 ) )
);回复:另一个JMP语法挑战..........::(可能像错字一样简单吗?更改“继续 Ë ss”到“ Process”
回复:另一个JMP语法挑战..........::(是的,就是这么简单!现在工作;非常感谢!
回复:另一个JMP语法挑战..........::(您遇到的问题是您没有正确确定列引用的范围。 当您在JSL中引用列时,列名以“:”开头,表示这是列引用。 虽然可以在开放代码中使用Column()函数来引用列,但通常在通过内存变量引用列时使用
myColumn = "Process Step Description";
column( myColumn ) << ……..
以下是完成所需内容的3种不同方式。 我建议您研究下面的代码,并阅读《脚本指南》以全面了解列和内存变量的作用域
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 10 ),
New Column( "Proceess Step Description",
Character,
"Nominal",
Set Values(
{"Unit Fails", "Outgoing Quality Check", "Unit Fails", "Unit Fails",
"Outgoing Quality Check", "Outgoing Quality Check", "Unit Fails",
"Outgoing Quality Check", "Unit Fails", "Outgoing Quality Check"}
)
)
);
dt << New Column( "Module Failures" );
:Module Failures <<
data type( Numeric, Format( "Fixed Dec", 1, 0 ) );
:Module Failures << Modeling Type( Continuous );
For Each Row(
If( :Proceess Step Description == "Unit Fails",
:Module Failures = 1,
:Module Failures = 0
)
);
// Or you can define your new column as a formula column
dt << New Column( "Module Failures 2",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( :Proceess Step Description == "Unit Fails",
1,
0
)
)
);
// or If the reference variable changes you may want to
// use the As Column()
zippy="Process Step Description";
dt << New Column( "Module Failures 3",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( as column(dt, zippy) == "Unit Fails",
1,
0
)
)
);
回复:另一个JMP语法挑战..........::(顺便说一句,您不需要使用If()函数。如果两个参数的值相等,则Equal()函数(或本例中的==运算符)返回1,否则返回0。因此,该脚本更加简洁。
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( :Process Step Description == "Unit fails" )
);