列と行の操作

このデモでは、データ列とデータテーブル行の管理方法を説明します。まず、スクリプトを使って、1列の新しいデータテーブルを作成します。コースジャーナルの「新しいデータテーブルと列の作成」セクションをクリックします。すると、new table関数を使用していることがわかります。この関数で作成されたデータテーブルオブジェクトへの参照を変数dtに格納します。テーブル名はTest Dataです。列は1つだけ作成します。データ型は数値、モデリングタイプは連続です。そして、values引数(set valuesとも呼ばれます。どちらも同義です)を使って、中置演算子であるインデックス演算子を使って値を設定します。つまり、1から7まで1ずつカウントしていくということです。これらの値を指定すると、このデータテーブルにはその行数だけ行が追加されます。オプションの引数で、最初に値を設定しなかった場合に使用できる行数を追加できます。 JMPでデータテーブル用のスクリプトを作成すると、行を追加するための引数を含むgetscriptメッセージが生成されます。また、小数点以下3桁のフィールドに、固定小数点引数を使用して書式を指定します。列のロックオプションをオンにして、ロックを解除しないと変更できないようにします。また、範囲チェック引数を使用して、列プロパティを割り当てます。ここでの構文LELE()は、列の値が以下であることを意味します。最後に、仕様限界のプロパティを設定するプロパティ設定引数の例を示します。仕様限界を示すオプションが複数あるため、3つの限界(下限仕様限界、上限仕様限界、目標値)のリストがあります。これらの新しい列へのオプション引数はすべて、列の作成後にメッセージとして送信することも、ここで示されているように、新しい列への引数として送信することもできます。それでは、スクリプトを実行してみましょう。下のログを見ると、test dataというデータテーブルオブジェクトのインスタンスが作成されたことがわかります。もちろん、スクリプト内の変数dtにマウスポインターを合わせると、この画面が表示されます。1列7行のデータテーブルが作成されています。スクリプトのすべての要素がテーブル自体に表示されています。まず、モデリングタイプアイコンが連続型であることを示しているので、データ型が数値型であることがわかります。連続型モデリングタイプは数値データのみを受け付けます。また、数値は右揃えになっています。数値を文字として扱う場合は、左揃えになります。列パネルのアイコンを見ると、列がロックされていることを示すロックアイコンがあります。小さなチェックマークは範囲チェックを示しています。そして、アスタリスクは、固有のシンボルを持たない追加のプロパティがいくつあるかを示しています。列情報ダイアログを開くには、もちろんいくつかの方法があります。このアスタリスクをクリックすることでショートカットを利用できます。このプロパティは仕様限界です。このドロップダウンメニューには複数のプロパティが表示される場合があります。これを選択すると、列情報が表示されます。もちろん、列を選択して列メニューを使用したり、列を右クリックして列情報を選択したりすることもできます。設定プロパティ引数で指定された値を持つ仕様限界が表示されます。また、範囲チェックもあります。ここでも、LELE(以下)は汎用構文で指定されています。そして、実際の値が表示されます。ここで、列がロックされていることがわかります。データ型は数値です。モデリングタイプは連続です。フォーマットは固定小数で、フィールド幅は列に表示できる最大文字数と小数点以下3桁です。列情報ダイアログをキャンセルして閉じます。pH列の選択を解除します。列プロパティのドロップダウンメニューには、独自の列プロパティを設定するオプションがあります。対話型で設定する場合、メニューオプションは「その他」になります。プロパティに名前を付け、そのプロパティが取得する値を指定します。ジャーナルに「ユーザー列プロパティの追加」というスクリプトがあります。これをpH列に送信します。このユーザー列は「メーターキャリブレーション」という名前にします。そして、今日の日付を月、日、年の文字列でフォーマットして入力します。ここでのテキスト、つまりset propertyの2番目の引数は、この場合、Today関数を使って、このコード行を実行した時点の1月0時からの秒数を取得します。これをformat関数で囲み、表示したい文字列形式を指定します。繰り返しますが、これはスクリプトを作成する際に試行錯誤が必要になる可能性があります。強調表示した部分だけを指定した場合、そしておそらくそうだったと思いますが、括弧の数が正しいことを確認したかったのです。強調表示した部分を実行してみましょう。選択してCtrl+Rを押します。すると、ログに希望どおりの文字列が表示されます。そこで、このプロパティ設定メッセージ、つまりプロパティメッセージ付きのコードを、最初はeval関数なしで実行するとします。そうすると、メーターキャリブレーションプロパティの列情報を見ると、文字通りコードが表示されます。実際には評価されません。つまり、プロパティ設定は2番目の引数を評価しない可能性があり、eval関数で囲む必要があります。さて、これをプロパティ設定メッセージの外で実行すると、全く同じ結果が返されます。つまり、最初はToday関数のフォーマットだけを使っていて、列プロパティで期待していた結果が返されないことに気づくような状況になるかもしれません。そして、eval関数を追加する必要があることに気づくでしょう。そこで、これらを何も選択せずに、このスクリプトを実行します。ログに表示されるメッセージは、単純にスクリプト化可能です。つまり、スクリプト化可能な操作を実行したということです。そのため、コードを実行しても期待どおりの結果が返されないことがあります。その場合は、このスクリプト化可能なメッセージが表示されるだけです。この場合、何が問題なのかを突き止める必要があります。「スクリプト可能」という言葉だけでは、実際には情報が得られないからです。しかし、今回の場合は、テーブルを見てみましょう。繰り返しになりますが、このアスタリスクをクリックするだけで列情報にアクセスできます。メニューに別の項目が追加されたことを示すために、このようにしています。つまり、固有のアイコンを持たない列プロパティは、このアスタリスクメニューに表示されます。「メーターキャリブレーション」をクリックすると、列情報ダイアログが開いたときに、このプロパティが選択されます。Today関数を使用して文字列としてフォーマットした結果が表示されます。これをキャンセルします。「ユーザー列の追加」プロパティのスクリプトエディタウィンドウを使って、このテーブルをもう少し操作してみます。今のところ、テーブルの幅はそれほど広くする必要はありません。それでは、データテーブルに新しい列をメッセージとして送信します。新しい列の名前は「Hydronium」にします。列を作成した後、数式を追加します。もちろん、列の作成時に数式を追加することもできます。また、コードから得られた列オブジェクト参照を変数に格納します。HYD(hydroniumの略)という名前にします。そして、テストデータオブジェクト参照を格納したdtにメッセージを送信した結果を代入します。dt new columnにメッセージを送信し、開き括弧と文字列を入力します。新しい列に必要な引数は、列名「Hydronium」だけです。さあ、実行してみましょう。結果をこの変数に格納することで、Hydroniumという名前全体を再度入力する必要がなくなります。つまり、オブジェクト参照を格納する必要がなくなったのです。列とのやり取りは引き続き可能です。ただし、短縮名を付けることで、入力の手間が少し省けるだけです。さて、先ほど述べたように、この列に数式を追加したいとします。それでは、新しい行に進みます。誤ってスクリプト全体を再実行して2つ目のHydronium列を作成しないように注意します。そのため、最初の行をコメントアウトします。そして、変数hydにメッセージを送信します。メッセージはset formulaです。式では負のpH乗を計算します。つまり、raise to--です。そして括弧を開いて--------を--します。そして、コロンスコープ演算子を使用します。これはpH列を参照するためです。これは、グローバル名前空間に他の変数名phが存在する場合の安全策です。「Names Default to Here」は使用していませんが、実際にはベストプラクティスとして推奨されています。そこで、セミコロンを入力して、スクリプトのこの行を実行します。ログにスクリプト可能なメッセージが出力されます。テーブルを確認すると、値が入力されていることがわかります。列と行の操作で、他にいくつか試してみることがあります。データテーブル内のセルに色を付けて、ある数値を超えた値にフラグを付けたいとします。スクリプトエディタウィンドウで新しい行に移動します。calloutという変数を作成します。そして、データテーブルに格納されているget rows whereというメッセージを代入します。ブール比較は、列pHの値がより大きいかどうかで行われます。この行だけを実行します。rowsとget rows whereは、行番号の列ベクトルを返します。次に、pHにメッセージを送信します。列オブジェクトへの参照は変数に格納されていないため、名前で参照します。pHはcolor cellsというメッセージを受け取ります。これは列に送信できる別のメッセージです。最初の引数には色の名前を使用します。インデックス値もあり、RGB値も使用できます。名前は文字列として使用します。これで、これらのセルを赤く塗りつぶします。 2つ目の引数は、どのセルに色を付けるかです。列全体、または行番号を指定できます。ここでは、pHが3より大きい行を格納する変数Calloutを使用します。そして、その行だけを実行します。ちなみに、セミコロンを付け忘れたことにご注意ください。これは、末尾のセミコロンが不要であることを示しています。末尾のセミコロンは、追加の引数が来る場合にのみ必要です。データテーブルを見ると、4つのセルが赤く色付けされていることがわかります。これは、大規模なデータテーブルがあり、一部の列に仕様限界がある場合などに便利です。例えば、仕様範囲外のセルに仕様限界に基づいて色を付けることで、グラフを見る前にデータテーブルで視覚的にフラグ付けすることができます。セルに色を付ける必要はありませんが、使用できるオプションの1つです。したがって、このデモでは、列を含む新しいデータ テーブルを作成し、そのデータ テーブルに列を追加し、列と行で実行できるいくつかの操作を少し試してみる例を示しました。
Re: 列と行の操作「Eval」なしで Set Property を実行しようとしましたが、それでも動作します。 (現在JMP 16.2を使用しています)
:pH << Set Property( "Meter Calibration2", Format( Today(), "m/d/y" ) );
