ほとんどの初期値を維持しながらJSLで記録するこんにちは、
確率の列があります。これらは主に 0 から 1 の間の数字です。しかし、確率が 100% の場合、1 ではなく 100 が返されます。この問題を解決するために私が考えたのは、単に再コーディング関数を使用して、すべての「100」を「1」に置き換えることでした。
私が使用しているコードは次のとおりです:
dt << Recode Column (
:"probability"n,
{IF( _rcNOW == 100, 1)},
Target Column (:"probability"n)
);これは部分的には機能しますが、問題は、確率が 100 未満のすべてのケースで、更新された列が空になることです。これは、IF ステートメントが、そのケースで何をすべきかわからないためです。その場合、元の値を保持するだけでよいことを伝える方法はありますか?
自動化とスクリプトデータのブレンドとクリーンアップRe: ほとんどの初期値を維持しながら JSL で記録するJMPで対話的に実行すると、JMPがスクリプトを作成します。たとえば、次のような表があります。

そして100を1に変えたい


JMPがスクリプトを作成します

これを少し整理して修正すると、次のようになります
dt << Recode Column(
dt:Prob,
{Map Value(_rcOrig, {100, 1}, Unmatched(_rcNow))},
Target Column(:Prob)
);
基本的に、JMP は私が JSL を記述しなくてもこのスクリプトを作成しました。
Re: ほとんどの初期値を維持しながら JSL で記録するありがとうございます。完璧に機能しました! (後から考えれば明らかです)。
実際、問題なく対話的に実行できましたが、別のファイルで実行する必要があるかもしれないので、スクリプト ソリューションを好みます。
「マップ値」とはどういう意味ですか? (それともインタラクティブなアプローチのことですか?)
Re: ほとんどの初期値を維持しながら JSL で記録するelse文で_rcNOWを使用できると思います
dt << Recode Column(
:"probability"n,
{If(_rcNOW == 100,
1
, _rcNOW
)},
Target Column(:"probability"n)
);
ただし、100 を 1 に変更したいだけの場合は、マップ値 (最も基本的な再コード操作) を使用する方が簡単かもしれません。再コード メニューから対話的にこれを行うことができると思います。