マトリックスの使用このデモンストレーションでは、行列の使用方法のいくつかを説明します。 セクションのコース日誌で、Cure Time Data をクリックします。 そして、各日付の平均治癒時間を求める必要があるとしましょう。 したがって、各行のすべての硬化時間の値を合計し、サンプル数で割ります。 そして、行列を使用してこの計算を実行します。 これもまた、これらのベクトル化された操作により、これがより効率的になります。 コース日誌に戻ると、Compute Statistics With Matrices という事前作成済みのスクリプトがあります。 これを動かして、Cure Time テーブルとスクリプトの両方が見えるようにします。 そのため、スクリプトは s という変数を作成することから始めます。 s は J 関数の結果を格納します。 J 関数は、指定された行数、指定された列数、開始値を持つ行列を作成します。 この場合、引数なしで Nrow 関数を使用しています。 したがって、現在のデータ テーブルの行数を調べるだけです。 line を実行すると、現在 s に保存されているのは、このゼロの列ベクトルであることがログでわかります。 これを使用して、それぞれの硬化時間の値を追加します。 だから私はforループを使用しています。 c equals を初期化したのは、硬化時間データを使用して 2 番目の列から始めたいからです。 c が列数以下であることをテストします。 繰り返しになりますが、特に大きなデータ テーブルを扱う場合は、for ループの外でこのカウントを行い、それを変数に格納し、c をその変数と比較することをお勧めします。 次に、パーサーは for ループの本体を評価します。 そこで、最初に代入関数の右側を見てみましょう。 そのため、メッセージ get as matrix を今回初めて column に送信し、それを s に追加します。 次に、後置インクリメント演算子で c を更新します。 したがって、c に 1 が追加されます。 c がまだ列数以下であることを確認するためにテストします。 次に、列を行列として取得し、それを s に追加します。 それでは、次の行を実行してみましょう。 for 関数がログに欠損値を返すことを思い出してください。 しかし、s にカーソルを合わせると、これらのかなり大きな数値 (5 つの硬化時間列すべての合計) が含まれていることがわかります。 最後に、現在のデータ テーブルに新しい列のメッセージを送信します。 そして、新しい列のタイトルは Average になります。 値については、繰り返しになりますが、これは設定値または値である可能性がありますが、実際に計算を行います。 繰り返しますが、変数を最初に格納するために変数を作成しなくても、values 引数に関数を指定できます。 ここの関数は、除算関数と減算関数です。 硬化時間列の合計である s を取り、それを c マイナスで割っています。これは c マイナスで割っています。これは、c を 1 からカウントし始めたからです。これにより、追加したアイテムの数が 1 減ります上。 もちろん、c はテストを超えてインクリメントする必要がありました。 テストに失敗する必要がありました。 c の最終的な値は - ホバーすると、それが であることがわかります。 これが、c マイナスで割る理由です。では、この最後の行を実行します。 また、列 Average が硬化時間データ テーブルに作成されていることがわかります。 ログに示されているように、列オブジェクトのインスタンスを作成したことがわかります。 実際、その列でさらに作業を続けたい場合は、その結果を変数に割り当てることができる行のすべてを行します。 ここで、デモンストレーションの次のステップとして、すべての Cure Time データを一度に処理して、計算を実行したいと考えています。 そのため、この事前作成済みスクリプトで行ったように、データ テーブル全体を一度に 1 列ずつではなく、マトリックスとして抽出します。 その前に、作成したばかりの列を削除したいと思います。 このスクリプト エディタ ウィンドウの内容全体を選択します。 そして、現在のデータ テーブルにメッセージを送信します。 列を削除します。 そして、削除したい列は Average という列です。 繰り返しますが、現在のデータ テーブルを使用すると、テストやプレゼンテーションを行うときに非常に便利です。 本番用のスクリプトでは、テーブルへのより明示的な参照を使用したいと考えています。 そのため、現在のデータ テーブルは、何かがどのように機能するかをテストするだけで、スクリプトの練習をしているときに便利です。 しかし実際には、展開または使用を計画していて、JMP の複数のバージョンで、またそれを使用する複数の状況で維持したいスクリプトの場合、現在のデータ テーブルではなく明示的なデータ テーブル参照を使用する必要があります。 それでは、これを実行してみます。 そして、それは私が取り除きたかった列を削除しました. そのスクリプト可能なメッセージをログに返しました。 それでは、スクリプト エディタ ウィンドウの内容をクリアしましょう。 データ テーブル全体を行列として抽出し、それを変数 m に格納します。 したがって、m には、現在のデータ テーブルにメッセージを送信した結果が割り当てられます。 そして、そのメッセージはマトリックスとして取得されます。 だから私はそれを実行します。 ログを見るか、m にカーソルを合わせると、この行列が得られました。 そして最初の列は、これらの非常に膨大な数です。 もちろん、これは一般にデータ テーブルに get as matrix を送信すると、すべての数値列が取り出されるためです。 そして、それには日付が含まれます。 したがって、ここでの日は数値として扱われています。 連続しているため、モデリング タイプのアイコンでわかります。 データ型は数値でなければなりません。 実際には、もしそれをより広くすれば、day に文字が含まれているように見えても、それは単なるフォーマットです。 数字なので右寄せです。 したがって、その値も抽出されたマトリックスとして取得します。 そして、硬化時間の計算をしたい場合、そして実際に、私がやりたい計算には最小値と最大値を見つけることが含まれます. その日のマトリックスでこれらの大きな値は必要ありません. というわけで、新しい列に進みます。 そして気をつけます。 私はすでに持っているものを保持したい - 私がこれを行っている間、私がすでにウィンドウに入れているコードを見えるようにしたいが、すべてをやり直したくはない. そのため、一度に 1 行ずつ実行するように細心の注意を払っています。 その最初の列を取り除くために、変数 m を使用し、0 と 1 で添字を付けます。 また、添字付けとは、特定の行を選択しないことを意味していることを思い出してください。 つまり、最初の列のすべての行を教えてください。 そして、それを空の行列に割り当てます。これは、何も入っていない角括弧だけです。 繰り返しますが、その 1 行だけを実行するには、その行を強調表示して、スクリプト全体の実行に使用する任意の方法を使用します。 ただし、選択または強調表示された部分のみが実行されます。 または、標準のデスクトップ キーボードの数字キーパッドでは、右端にある Enter キーを使用できます。 そのため、ログに返されるのは空の行列だけです。 しかし、ここで m にカーソルを合わせるか、m を強調表示して実行すると、硬化時間の値しかないことがわかります。 これらの大きな日付番号を持つ最初の列を取り除きました。 新しい行に移動して、使用できる他の行列関数をいくつか見ていきます。 そこで、変数 a を作成します。この変数には、loc 関数を使用した結果の LOC が割り当てられます。 そして、この行列 m 内で値が より大きい位置を見つけます その行だけを実行すると、行列 m が行ベクトルであるかのように扱われ、最初のベクトルから数えられます。 position を返し、行列内のすべての要素の単一の添え字の位置を返すだけです。実際の値が必要な場合は、avals という変数を作成します。 そして、変数 a を使用して m に格納されている行列に添字を付けた結果に署名します。 そして、その行だけを実行します。 そしてもちろん、このスクリプトを合理化するために、これらすべての値の位置を保存する必要がない場合は、実際には単純に添え字を付けることができます-これをコピーさせてください-添え字loc 関数を使用した行列 m の この例で最初に a に保存した位置を操作する他の理由がない限り、場所を保存してからそれを使用するというこの余分な手順は必要ありません。 この行列で次にやりたいことは、変換された値を計算することです。 Ans この変換は、硬化時間の各観測値から表全体の最小値を差し引いたものを、最大値から最小値までの硬化時間値の範囲で割って、それを掛けます。つまり、各観測値での最小値からの距離を取るようなものです。範囲の割合としての時間。 これは、行列を操作するもう 1 つの利点を示しています。 データ テーブル全体の最小値を見つけるには、スクリプトを作成する場合でもインタラクティブに作業する場合でも、データ テーブル内の個々の列を操作すると、その最小値または最大値を見つけるために多くの手順が必要になります。 しかし、マトリックスを操作する場合は、非常に短い 1 行のコードで実行できます。 スクリプト エディタ ウィンドウで - 先に進み、内容をクリアします - 変数 minCT を作成します。つまり、最小硬化時間です。その変数に、 m を引数とする min 関数。 そして、先に進み、その行を実行します。 したがって、最小値は次のとおりです。次に、変数 maxCT も作成します。 そして、引数として m を指定して max 関数を使用した結果を割り当てます。 そして、その行だけを実行します。 これで、これらの変数をこの変換の計算に使用できるようになりました。 変換値を格納する変数 t を作成します。 新しい行に移動させてください。 そのため、t には時間の結果が割り当てられ、分子 m から minCT を引いた開き括弧、除算記号を閉じ括弧、分母 maxCT から minCT を引いた開き括弧が割り当てられます。 したがって、その行だけを実行すると、これらの変換値を取得できます。 各観測値から硬化時間値の範囲の割合として最小値を差し引いたもの。 さて、それは多くの小数点以下の桁数です。 私たちは本当にそれほどの精度を持っていません。 したがって、実際にこれらの値を丸めることができます。 そして、また新しい行に行きます。 round 関数の結果を t に代入して、t の値を上書きします。 元の変数を保持したい場合は、新しい変数でこれを行うことができます。 しかし、t と入力してから、代入演算子であるラウンド関数を入力します。 引数は最初です。何を丸めるのですか? そのため、t に格納されている値を丸めています。 そして、小数点以下何桁が必要ですか? ゼロが欲しい。 これで、マトリックスの値が切り捨てられます。 これは、完全な値がまだバックグラウンドで保存されている場合に、小数点以下の桁数がゼロになるようにデータ列をフォーマットすることと同じではありません。 だから私はここでフォーマットしていません。 私は実際に値を切り捨てています。 実行してみます。 これで、変換された値の整数値が得られました。 ここで、これらの値を硬化時間データ テーブルに戻したい場合は、マトリックスをループして新しい列を作成できます。 完全に新しいデータ テーブルを作成したい場合は、as table という非常に単純な関数があります。 また、このテーブルに名前を付けたり、列に名前を付けたりするためのオプションの引数があります。 as table の引数として変数 t を使用するだけで、このデモンストレーションを簡単にします。 これを実行すると、一般的な列名を持つこの無題のテーブルが得られます。 しかし、その変換行列からの値はすべて、このテーブルに取り込まれています。 ここでも、名前と列見出しを as table 引数の一部として指定できます。 または、スクリプトを使用して事後にこれを変更することもできます。 そこで、列またはデータ テーブル全体、すべての数値列、データ テーブル全体、および行列で実行できるいくつかの操作によって、データ テーブルから数値を抽出するいくつかの異なる方法を見てきました。