JMP スクリプト - 「セル」の値を変更する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />やあ、
スクリプト内の計算の結果である「セル」の値を変更するには、どのようにスクリプトを作成するか疑問に思っています。
具体的には、計算された値が負の場合、他のすべての「セル」をそのままにして、セルの値を「0」に変更できるようにしたいと考えています。
新しい列に書き込む必要がある場合でも、問題ありません。 たとえば、計算値の列があり、その列が負の値である場合、その「セル」に「0」とだけ表示する新しい列を作成します。
前もって感謝します。
Re: JMP スクリプト - 「セル」の値を変更する方法一発ギャグ....
dt[dt<< 行を取得 where(:ageval < 14)] = 0;
Re: JMP スクリプト - 「セル」の値を変更する方法このシナリオでは、「範囲チェック」列プロパティを使用できます。 そうすることでテーブルにメタデータが含まれるため、別のテーブルは必要なくなります。
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(2);
Column(dt, "age") << rangeCheck( !LT( 13 ) );
Column(dt, "weight") << rangeCheck( LT( 100 ) );Re: JMP スクリプト - 「セル」の値を変更する方法数式を変更して、変更する値を確認し、数式内の条件ステートメントを使用して、必要な値に変更する必要があります。
// Sample formula
:A + :B;
If( isMissing(:A+:B) == 1, 0 );
Re: JMP スクリプト - 「セル」の値を変更する方法こんにちは、ジムさん
IF コマンドで定義されている「else」と 3 番目の選択肢がある場合、このスクリプトはどのような形式になりますか?
一番、
K
Re: JMP スクリプト - 「セル」の値を変更する方法イアン、
マトリックス方式は気に入っていますが、洗浄条件が異なる複数のカラムを洗浄したい場合はどうすればよいでしょうか。
たとえば大きなクラスでは
age --> 値が 13 未満のすべてのセルを空として設定します
高さ --> 値が 100 を超えるすべてのセルを空として設定します
すべての列条件の参照テーブルがあるとします。
Re: JMP スクリプト - 「セル」の値を変更する方法式を載せてもらえますか?としてテキネルソン数式のチェック部分を作成するだけでよいと言いました。
数式を投稿するには:
1. データセットを開き、数式列の横にある + 記号をクリックします。
2. 数式ウィンドウ内をダブルクリックします。これにより、ウィンドウが変更され、数式の JSL コードが表示されます。
3. JSL コードをコピーして、このフォーラムに投稿します。
新しい式は次のようになります。
一時=置く-オリジナル-方式-ここ;
もしも(一時< 0 、 0 、一時) ;
Re: JMP スクリプト - 「セル」の値を変更する方法確かに条件チェックを数式の一部にすることができます
Re: JMP スクリプト - 「セル」の値を変更する方法テストを式の一部にするのは理にかなっていますか?
もしも(マッチ( ... ) < 0 、
0 、
マッチ( ... )
)
Re: JMP スクリプト - 「セル」の値を変更する方法皆さん、ありがとうございました。
私がやろうとしているのは、数式を含む列のセルの値を変更することです。
Big Class 列「年齢」は数式からのものではないため、これらの提案はすべてセルの値を変更するために機能します。
一致式を使用する「テスト」という名前の列があります。 一致式で負と計算された場合に、その列のセルの値をゼロに変更するスクリプトを作成する方法はありますか? 値が負の場合に強制的にゼロにできるようにしたいと考えています。
Re: JMP スクリプト - 「セル」の値を変更する方法これでもう一歩進みます。私はイアンが示したようなことを何度も行ってきました。データテーブルからデータを取り出し、行列演算子を使用します。これには、大量のデータに対するパフォーマンスの利点があります。ただし、次の手法は、非常に高速で、データ テーブルから抽出する必要がないため、私が何度も使用した手法です。
名前のデフォルトは Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Try( dt:Age[dt << get rows where( :Age < 14 )] = 0 );
"Try" 関数は、Get Rows Where が空の行列を返し、代入でエラーがスローされる場合を防ぐだけです。
Re: JMP スクリプト - 「セル」の値を変更する方法Jim の返答に基づいて、可能であればループを避けることが一般的に良い習慣であると考えられています。
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get the values of age into a vector
ageVals = dt:Age << getValues;
// Find the location of age values less than 14
ageValsLessThan14 = Loc(ageVals < 14);
// Set these values to zero
ageVals[ageValsLessThan14] = 0;
// Put the new values back into the column
dt:Age << setValues(ageVals);
Re: JMP スクリプト - 「セル」の値を変更する方法レベッカ
あなたが求めていることは、ジャスティンが示した方法よりもさらに基本的なレベルで説明する必要があるのではないかと思います。彼の例は確かに答えを与えますが、問題を説明した方法から、条件ステートメントのコンポーネントが現在のデータテーブル以外のソースから来ている可能性があるシナリオを推測できます。
JMP データ テーブルの基本の 1 つは、どのセルでも直接アドレス指定できることです。Justin の回答のデータ テーブルを使用すると、列名と行番号を指定するだけでどのセルにもアクセスできます。
:Age[1]
Age 列の最初の行の値を指します。これを参照するより正しい方法は、データ テーブル ポインター (データ テーブル名前空間) を使用することです。したがって、ジャスティンの応答で指定されているデータテーブルへのポインタが「dt」である場合、
dt:Age[1]
の方がより適切な形式です。
Justin の例を挙げると、新しい列を作成する必要がなく、実際に値を変更することができます。次のコードはそれを行います
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For( I = 1, I <= N Rows( dt ), I++,
if(dt:Age < 14,
dt:Age = 0
);
);
Re: JMP スクリプト - 「セル」の値を変更する方法新しい列にコピーするときにセルを条件付きで変更する方法の例を次に示します。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = dt << New Column( "New Column", Formula( If( :age < 14, 0, :age ) ) );
あなたの場合、条件を 14 ではなく 0 未満に変更します。