列のクローンを作成する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、みんな、
データテーブル内の列のクローンを作成したい(名前以外すべてが同じ新しい列を作成する)。 これを行うためのより洗練された (そして堅牢な) 方法はありますか、それとも値とすべてのプロパティを抽出して新しい列に割り当てる必要がありますか。
dt3 =開ける( "$SAMPLE_DATA/Cars.jmp" ) ;
// 列プロパティを追加します
dt3 :作る<<プロパティの設定(
「価値ある色」 、
{ 「アキュラ」 = - 13977687 、 "アウディ" = - 3780931 、 "BMW" = - 4222943 、 "ビュイック" = -
13596966 、 "キャデラック" = - 2211217 、 「シボレー」 = - 10562780 、 「クライスラー」 = -
13156647 、 「ダイハツ」 = - 2078390 、 「ドッジ」 = - 13182413 、 "鷲" = - 9549600 、
"フォード" = - 2334147 、 「ジオ」 = - 13772446 、 「ホンダ」 = - 9282864 、 「ヒュンダイ」 = -
6995852 、 「インフィニティ」 = - 1524612 、 "いすゞ" = - 9458080 、 "ジープ" = - 14452073 、
「レクサス」 = - 6391856 、 「リンカーン」 = - 2745505 、 「マツダ」 = - 10199751 、 「メルセデス」 =
- 7150697 、 "水星" = - 10513726 、 「三菱」 = - 8381519 、 「日産」 = -
3502441 、 「オールズモビル」 = - 3615440 、 「プジョー」 = - 13925307 、 「プリマス」 = -
11502354 、 「ポンティアック」 = - 7449196 、 「ルノー」 = - 9229791 、 「サーブ」 = - 4074344 、
"土星" = - 13050224 、 「スバル」 = - 12565885 、 「鈴木」 = - 2068529 、 「トヨタ」 =
- 4494272 、 「フォルクスワーゲン」 = - 11824110 、 「ボルボ」 = - 8734293 、 「ユーゴ」 = - 13849421 }
) <<値ごとにセルに色を付ける;
// 列のクローンを作成します
クローン列= dt3 :作る<<スクリプトを取得;
クローン列;
Re: 列のクローンを作成するいや、その解釈は完全に間違っています。
JMP のスクリプト作成には、通常、データ テーブル、データ列、分析プラットフォームなどの組み込み JMP オブジェクトの使用が含まれます。 これらのオブジェクトを使用するには、目的のアクションを示すメッセージをオブジェクトに送信します。 ここでは、実際の JMP 関数を使用する場合と同等の演算子を使用する場合の両方のバージョンの一般的な形式を示します。
Send( object, message );
object << message;
オブジェクトは基準値によって表されます。 メッセージは名前で表されます。 この例は次のように解釈されます。
dt3:Make << Get Script
メッセージを送信するスクリプトの取得と呼ばれるオブジェクトにdt3:メイク。 このリファレンスでは次の形式を使用しますテーブル:列。 データ テーブルへの参照は、以前に変数に格納されていました。 dt3 。 列への参照は名前によって行われます。
メッセージスクリプトの取得任意の JMP オブジェクトに送信できます。 このメッセージの背後にある「getter」メソッドは各オブジェクトによってオーバーライドされ、元のオブジェクトを再生成するスクリプトを返します。 つまり、オブジェクトのクローンを作成するコードを返します。 したがって、いつでも同じメッセージを使用して、任意のオブジェクトの一意のコードを取得できます。
Re: 列のクローンを作成する説明と素早い返信ありがとうございます。 Get は、jmp に「組み込まれ」て実行されるスクリプトの名前だと思います。 そうでなければ、他の操作を実行するのではなく、列を複製する方法をどのようにして知ることができるでしょうか。 あなたの返信から多くのことを学びました。
Re: 列のクローンを作成する式が評価される順序で考えてみましょう。
dt3:Make << Get script
このメッセージにより、JMP は同じ列を作成する JSL コードを返します。
Eval(dt3:Make << Get script)
JSL コードが評価され、元の :Make 列のコピーである新しいデータ列が生成されます。 Eval() 関数は、その新しい列への参照も返します。
Eval(dt3:Make << Get script) << set name("Clone");
最後に、オブジェクト参照を使用して新しい列の名前を変更するメッセージを新しい列に送信します。
Re: 列のクローンを作成するこんにちは MS さん。このコマンドが dt 内の選択された列をどのように複製するのか説明していただけますか? Eval(dt3:Make << Get script) << set name("Clone");通常、これはここで尋ねられる種類の質問ではないことは理解していますが、5 年前の質問ですが、これは私が使用したプログラミング言語の中で最も不透明なコマンドです。 でも、私はよく働きます!Re: 列のクローンを作成するありがとうMS 、
確かに、プライベートなテーブルでは色はあまり役に立ちません。
大事なことは、ヒューリスティックなプロセスに基づいてアルゴリズムを書いているということです。これは、自分でデータ行を 1 つずつ「読み取って」解釈する必要がある場合に実行するスクリプトが必要であることを意味します (ここで色が必要になります)。一方、スクリプトは実行時に高速である必要があるため、表示されているテーブルと高速に実行されているテーブル(プライベート)の間で戻ったり戻ったりする必要があります。このビジュアル テーブルとプライベート テーブルの間の移行により、いくつかの開いたテーブル間でスクリプトを実行する際に堅牢性の課題が生じます。
ロン
Re: 列のクローンを作成する値の色のような列プロパティをプライベートテーブルに保持することにどのような価値があるのか、本当にわかりません。データのみが必要な場合 (通常はプライベート テーブルに当てはまります)、以下のより単純な方法を使用できます。
dt3 <<新しい列( 「クローンを作る」 、方式( dt3 :作る))
Re: 列のクローンを作成するありがとうDave@Pega-Analyticsテキネルソン、
これが私が探していたものです。列の複製がこんなに面倒だとは思いませんでした。
以下は私の最終的なスクリプトです。
デフォルトの名前はここにあります( 1 ) ;
dt3 =開ける( "$SAMPLE_DATA/Cars.jmp" 、プライベート) ;
// 同じテーブルにクローンを作成します
評価(解析する( "(dt3<<" ||文字( dt3 :作る<<スクリプトを取得) || ") << set name(\!"クローン\!");" )) ;
// 列が複製されたことを証明します - ログを確認してください
dt3 :クローン<<スクリプトを取得;
近い( dt3 、保存なし) ;
一番、
ロン
Re: 列のクローンを作成するデータ テーブル ポインターを先頭に追加する 1 つの方法の完全な例を次に示します。
Eval(Parse("(dtxxx<<"||char(dt3:Make << Get script)||") << set name(\!"Clone\!");"));
Re: 列のクローンを作成する評価の前にスクリプト変数を編集することで、より堅牢にすることができます。つまり、式の先頭に「dt <<」を追加します。
Re: 列のクローンを作成するクローンがプライベートではない別のテーブルに送信されるため、プライベート テーブルを使用するときに堅牢性の問題が発生しました。
Re: 列のクローンを作成するありがとうMS 、
既存の列を複製するための jsl コマンドがないことに驚きました。さらに、dt3 がアクティブなテーブルではない場合は、別のテーブルに新しい列が作成されます。
Re: 列のクローンを作成するそれは私にはとてもスマートに見えます。 堅牢性に関して何か問題を経験したことがありますか?
変数にメモリを浪費したくない場合は、int で簡略化できます。ワンライナー:
評価( dt3 :作る<<スクリプトを取得) <<セット名( "クローン" ) ;
複数の列のクローンを作成する場合は、これらのサブセットを作成し、列の名前を変更して、元のデータ テーブルで更新することを検討します。