別のJMP構文チャレンジ..........::(IFステートメントを適切にフォーマットしようとしていますが、何度も繰り返しても機能しません。 どんな助けにも感謝します!
「プロセスステップの説明」という列のあるデータテーブルがあります。
表に「モジュールの失敗」という別の列があります。これは、数値/連続データタイプです。以下のスクリプトセグメントを使用して正常に作成しました
次のように、[Process Step Description]セルの値に基づいて、[Module Failures]列のセルの値を設定します。
プロセスステップの説明..................モジュールの失敗
発信品質チェック.................... 0
ユニットが失敗する...................................................... 1
スクリプトに次のコマンドがあります。IFステートメント自体を除いて、すべてが適切に機能することがわかる限り
dt << New Column( "Module Failures");
列( "モジュールエラー")<< data type(Numeric、Format( "Fixed Dec"、1,0));
列(「モジュール障害」)<<モデリングタイプ(連続);
If(Process Step Description == "Unit Fails"、( "Module Failures = 1)、(" Module Failures = 0));
私は常に一重引用符と二重引用符のルールに混乱するので、それは引用符と関係があるかもしれませんが、私は非常に多くの順列を試しましたが、何もうまくいかないようです
前もって感謝します
スクリプティング再:別のJMP構文チャレンジ..........::(ログにメッセージはありますか?
データのサンプルを添付できますか?
再:別のJMP構文チャレンジ..........::(どうもありがとうございました!!あなたが提示したオプションの中で、式の実装は私にとって最も直感的です。「もし」が式として実装される必要があるのではないかと思ったのですが、よくわかりませんでした。以下の既存のスクリプトセグメントに置き換えました。 残念ながら、それでも「。」のみが返されます。Module Failures data列にあるため、まだ問題があります。 新しい列が作成され、データ型は正しいですが、「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構文チャレンジ..........::(タイプミスと同じくらい簡単でしょうか?「Proce e 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()関数(またはこの場合は==演算子)は、2つの引数の値が等しい場合は1を返し、等しくない場合は0を返します。したがって、このスクリプトはもう少し簡潔です。
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( :Process Step Description == "Unit fails" )
);