另一個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" )
);