Formula-Character でのコマンドの書き方<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Formula-Character 機能を使用して実行可能なコマンドを記述する方法を知りたいと思っています。
たとえば、クラス 1.0 からクラス 9.0 までレベル分けされたデータを含む文字データの列があります。
この情報を 1.0 から 9.0 のみを表示する別の列に変換したいのですが、数式文字関数を使用してこのためのコマンドを作成するにはどうすればよいですか?
私が知りたいもう 1 つの要望は、文字データの列を新しい列の別のステートメントに変更するにはどうすればよいかということです。
たとえば、甘い、おいしい、酸っぱい...を示すデータの文字列があり、それを甘い--> Bin1、おいしい--> Bin2、酸っぱい--> Bin3に変更したいと考えています。 数式文字を使用して sweet-->Bin1 を新しい列に変換するにはどうすればよいですか。
ありがとう、
Re:Formula-Characterでのコマンドの書き方こんにちは、バーニーさん
申し訳ありませんが、これは役に立ちません。 曖昧な列名を選択したことが混乱の原因になっているのではないかと思います。 添付されたデータセットには「OriginalColumn」という名前の列があり、以下のスクリプトは Word() 関数でその列を参照します。 word 関数は、検索する単語に関する引数を一切取らず、検索する単語番号と列のみを受け取ります。 「クラス」という列名を削除しようとしていたのに、それを使用したのは私の間違いでした。以下のスクリプトが添付のテーブルで機能するかどうかをお知らせください。 存在する場合は、テーブル内の列の名前に一致するように「 :OriginalColumn 」を変更することで、任意のテーブルで機能するように変更できるはずです。
ジュリアン
// 新しい列を作成します
現在のデータテーブル() <<新しい列( 「クラス番号のみ」 、キャラクター) ;
//すべての変更が行われるまでテーブルの更新を停止します。大規模なテーブルに適しています
現在のデータテーブル() <<データ更新の開始;
//各行に変更を適用します
各行について(
:クラス番号のみ=言葉( 2 、 :オリジナルコラム)
) ;
// 「データ更新」を終了
現在のデータテーブル() <<データ更新終了;
Re:Formula-Characterでのコマンドの書き方こんにちは、ジュリアンさん
本当は数値に変換せずに文字として残しておきたいのですが。
私が望むのは、元の「クラス 9.0」から「クラス 」を削除し、「9.0」のみを表示することだけです。
(2、クラス)という単語を使用しましたが、うまくいきませんでした。
ありがとう、
Re:Formula-Characterでのコマンドの書き方やあバーニー426
結果の列を数値にしたいように思えますが、そうですか? もしそうなら、上記の Peter の提案がこれに対処する正しい方法です。 文字列の一部を抽出すると、その文字列を数値に変換するように JMP に指示しない限り、その部分は文字列のままになります。 これは、Word() 関数の周囲に Num() 関数をラップした完成したスクリプトと、新しい列の作成時に数値になるようにするもう 1 つの変更です。
これがうまくいくことを願っています!
ジュリアン
// 新しい NUMERIC 列を作成します
現在のデータテーブル() <<新しい列( 「クラス番号のみ」 、数値) ;
//すべての変更が行われるまでテーブルの更新を停止します。大規模なテーブルに適しています
現在のデータテーブル() <<データ更新の開始;
//各行に変更を適用します
//以下の関数は「Class」という名前の列を検索します。
// データが別の名前の列にある場合
// :Class を列名に変更しますが、
// : を必ず保持してください。これにより、JMP にあなたが次のことを認識できるようになります。
//列を参照します。
//この関数は Word() 関数も Num() でラップします
// 文字出力を数値に変換します
// 結果の列が数値のままになることを許可します
各行について(
:クラス番号のみ=番号(言葉( 2 、 :クラス) )
) ;
// 「データ更新」を終了
現在のデータテーブル() <<データ更新終了;
Re:Formula-Characterでのコマンドの書き方NUM 関数を使用して文字列数値を実際の数値に変換してみてください。
ある= 「クラス9」 ;
b =番号(言葉( 2 、ある)) ;
Re:Formula-Characterでのコマンドの書き方こんにちは、ジュリアンさん
「Match」のスクリプトや公式は完璧に機能しており、とても気に入っています。
しかし、数式でもスクリプトでも「Word」機能を動作させることができません。
私が持っているケースは、「クラス 1」から「クラス 9」の文字である既存の列で、その横に番号 (1 から 9) のみを表示し、文字/属性形式のままの新しい列を作成したいと考えています。
したがって、例として書いていただいた Word() スクリプトに基づいて、母列 (クラス 1…クラス 9) の入力情報が必要で、Word() 関数を使用しますか?
ありがとう、
バーニー
Words() を使用して数値だけを取り出す
// 新しい列を作成します
現在のデータ テーブル() << New Column("ClassNumberOnly", Character);
//すべての変更が行われるまでテーブルの更新を停止します。大規模なテーブルに適しています
現在のデータ テーブル() << データ更新の開始;
//各行に変更を適用します
各行について(
:ClassNumberOnly = Word( 2, :Class )
);
// 「データ更新」を終了
現在のデータ テーブル() << データ更新の終了;
Re:Formula-Characterでのコマンドの書き方こんにちは、バーニーさん
質問してよかったです! 数式列を書きたいか、実際の値を書きたいかに応じて、これにアプローチできる方法がいくつかあります。 状況によってどちらかが必要になるため、両方の方法を以下に示します。
実際の値を書き込むには:
| Word() を使用して数値だけを抽出する |
|---|
// 新しい列を作成します 現在のデータテーブル() <<新しい列( 「クラス番号のみ」 、キャラクター) ; //すべての変更が行われるまでテーブルの更新を停止します。大規模なテーブルに適しています 現在のデータテーブル() <<データ更新の開始; //各行に変更を適用します 各行について( :クラス番号のみ=言葉( 2 、 :クラス) ) ; // 「データ更新」を終了 現在のデータテーブル() <<データ更新終了; |
| 再コーディングに Match() を使用する |
|---|
// 新しい列を作成します 現在のデータテーブル() <<新しい列( 「属性の記録」 、キャラクター) ; //すべての変更が行われるまでテーブルの更新を停止します。大規模なテーブルに適しています 現在のデータテーブル() <<データ更新の開始; //各行に変更を適用します 各行について( :属性の再コード=マッチ( :属性、 "美味しい" 、 「ビン3」 、 "甘い" 、 「ビン2」 、 "酸っぱい" 、 「ビン1」 、 :属性 ) ) ; // 「データ更新」を終了 現在のデータテーブル() <<データ更新終了; |
数式列を作成するには:
| Word() を使用して数値だけを抽出する |
|---|
//数式列を作成します 現在のデータテーブル() <<新しい列( 「クラス番号のみ」 、キャラクター、 方式( 言葉( 2 、 :クラス) ) ) ;
|
| 再コーディングに Match() を使用する |
|---|
//数式列を作成します 現在のデータテーブル() <<新しい列( 「属性の記録」 、キャラクター、 方式( マッチ( :属性、 "美味しい" 、 「ビン3」 、 "甘い" 、 「ビン2」 、 "酸っぱい" 、 「ビン1」 、 :属性 ) ) ) ;
|
お役に立てれば!
ジュリアン
Re:Formula-Characterでのコマンドの書き方こんにちは、ジュリアンさん
私の最初の投稿をもう一度読んでいただきありがとうございます。 はい、私はこれを毎日ベースで使用しているので、スクリプトオプションがあればさらに良いでしょう。
Re:Formula-Characterでのコマンドの書き方どういたしまして! 最初の投稿をもう一度読んだところ、列数式ソリューションではなくスクリプト ソリューションを探していたのではないかと思いました。 その場合はお知らせください。スクリプトを使用して設定をお手伝いいたします。 お気づきかもしれませんが、[Col] > [Recode] には、JMP にスクリプトとしてリコーディングを作成させるオプションもあります。そこで、まずそこから始めて、Word() を使用するようにコードを調整して、最初の質問に対処します。
ジュリアン
Re:Formula-Characterでのコマンドの書き方Julinanさん、有益な情報をありがとうございました。
バーニー
Re:Formula-Characterでのコマンドの書き方やあバーニー426 、
列の一部を抽出するには、Word() 関数を使用できます。この関数は 2 つの引数を取ります。1 つ目は抽出する「単語」(ここに数値を入力します)、2 つ目は抽出するテキストを含む列です。 単語を区切る区切り文字を指定できる 3 番目のオプションの引数がありますが、この場合はデフォルトの「スペース」が機能します。 したがって、これを使用するには、Word(2,:Class) で新しい数式列を作成します (:Class は、元のデータが格納されている変数です)。たとえば (添付のデータセットにもあります):

これにより、最初に出現したスペースの後にある 2 番目の「単語」、つまり数字のみが取得されます。
2 番目の質問では、match 関数を使用します (下記)。 これは自分で作成することも、列再コード ユーティリティを使用して作成することもできます。 後者を行うには、元の列を選択し、[列] > [再コード] に移動します。 変数にどのような新しい値を持たせるかを指定し、「インプレイス」の代わりに「数式列」を選択します。JMP は match 関数を使用して新しい列を作成します。

最初の質問でも同じように [列] > [再コード] を使用できますが、レベルが多い場合は、手動で再コードを指定するよりも Word() を使用した方が高速です。
これらの数式を含むサンプル データセットを添付しました。
これがお役に立てば幸いです!
ジュリアン