JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですか<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />私は JSL には比較的慣れていませんが、作成しているソフトウェア製品が結果を適切に報告しているかどうかをテストするために、テーブルとグラフを生成するプロセスを処理するいくつかのスクリプトを作成しています。 私が現在抱えている問題の 1 つは、報告された時間を (簡単に) 表示するだけでなく、報告時間ビンから将来の時間ビンへの残差も反映するグラフを作成する必要があることです。
たとえば、x 軸が午前 0 時から午前 0 時までで、離散的な 15 分の時間ビンを持つ待ち時間グラフを作成する必要があります。 待ち時間を報告するデータセットがあり、待ち時間が始まる時間をビンに入れています。 わかりやすくするために、午前 9 時 5 分に場所に入るエージェントの待ち時間 90 分が報告されている 1 行を取り出します。 その待機時間の時間ビンは午前 9 時です。90 分の待機時間がレポートされ、午前 9 時の時間ビンのグラフに表示されます。 従来のグラフでは、他のすべてのデータが除外されるため、他のすべての時間はゼロになりますが、実際には、グラフには、待機時間がゼロになるまでの複数の時間ビンにわたるエージェントの待機時間が表示されるはずです。事実上、次にその場所に入る人が、現在のエージェントがまだ待機している時間枠の間にエージェントの後ろの場所に到着した場合に予想される待ち時間の最小値はどれくらいですか。
したがって、以下にリストされているものを除く、時間ビンの値がゼロであるすべての時刻の行列を作成する必要があります。
タイムビン待ち時間
午前9時 90分
午前9時15分 80分
午前9時30分 65分
午前9時45分 50分
午前10時 35分
午前10時15分 20分
午前10時30分 5分
データテーブルの最後の列の後に時間ビンごとに列を生成するスクリプトがすでにあります。関係する条件の数と、ゼロ以外の待機時間がどこで、いつ、どのくらいの頻度で発生するかがわかりました。行列の任意の行で列式を使用すると、たとえ実行可能だったとしても複雑になりすぎます。 そこで、ネストされたループを使用して行列の各列の各行を調べ、そこにどのような待機時間の値を配置するかを決定できるように、個々のセルにデータを設定する何らかの方法があることを期待していました。
私が希望するもう 1 つのオプションは、オーバーフロー データを処理するための子レコードを含む新しいデータ テーブルを作成することです。 たとえば、データ テーブルのサブセットは次の 4 行です。
| エージェントID | 位置 | 日 | 入場時間 | 終了時間 | 最小通過時間 | 待ち時間 | タイムビン |
|---|
184 | 出力キュー | 1 | 午前7時10分24秒 | 午前7時10分24秒 | 0 | 0 | 午前7時 |
| 185 | FIS入口 | 1 | 午前6時41分38秒 | 午前6時41分38秒 | 0 | 0 | 午前6時30分 |
| 185 | 訪問者の列 | 1 | 午前6時41分38秒 | 午前7時00分51秒 | 0 | 1153 | 午前6時30分 |
| 185 | 手荷物の受け取り | 1 | 午前7時1分59秒 | 午前7時1分59秒 | 0 | 0 | 午前7時 |
スクリプトは元のテーブルの各行をスキャンし、それを新しいデータ テーブルにコピーします。 上記の例の 3 行目では、合計待機時間 1153 秒は、午前 6 時 30 分の時間ビンで待機した時間よりも長くなります。つまり、午前 6 時 45 分の時間ビン - 午前 6 時 41 分 38 秒のキュー エントリ時間 - 0 秒のキュー通過時間 = 午前 6 時 30 分の時間ビンで使用される待機時間 202 秒。 したがって、新しいデータ テーブルに子行が追加され、上に示したデータ テーブルの領域は次のようになります。
| エージェントID | 位置 | 日 | 入場時間 | 終了時間 | 最小通過時間 | 待ち時間 | タイムビン |
|---|
| 184 | 出力キュー | 1 | 午前7時10分24秒 | 午前7時10分24秒 | 0 | 0 | 午前7時 |
| 185 | FIS入口 | 1 | 午前6時41分38秒 | 午前6時41分38秒 | 0 | 0 | 午前6時30分 |
| 185 | 訪問者の列 | 1 | 午前6時41分38秒 | 午前7時00分51秒 | 0 | 1153 | 午前6時30分 |
| 185 | 訪問者の列 | 1 | 午前6時41分38秒 | 午前7時00分51秒 | 0 | 951 | 午前6時45分 |
| 185 | 訪問者の列 | 1 | 午前6時41分38秒 | 午前7時00分51秒 | 0 | 51 | 午前7時 |
| 185 | 手荷物の受け取り | 1 | 午前7時1分59秒 | 午前7時1分59秒 | 0 | 0 | 午前7時 |
斜体の行は、訪問者キュー内のエージェント 185 の子行で、エージェント 185 が訪問者キュー内で待機しなくなるまでの残りの待機時間を示します。 子レコードが必要な追加データを提供するため、このテーブルを使用して必要なグラフを生成できます。
誰かがこの解決策のいずれかの方法を提供できる場合、それは非常に感謝されます。
Re: JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですかありがとうロン。
それは知って良いです。 この行は無関係であるように見えましたが、JSL はスクリプト言語であり、私は独自のスクリプトを作成し始めたばかりです。実際、私は数年間 JMP のスクリプト機能を使用していましたが、主にプラットフォームからデータ テーブルにスクリプトを保存していました。必要に応じていくつかの調整を実行します。行の追加に関連して何をしているのか、あるいは何をしているのかはわかりませんでした。 最初は行の事前入力に関係があるのではないかと勝手に推測していましたが、行の追加が文書化されていない方法でそれを行っていることに気付きました。
そういえば、JMP スクリプト ガイドによると、行の追加(番号)指定されたものを追加します番号の行ですが、内部ループはイベント期間に基づいて一度に 1 行ずつ新しい行を追加し、リストとして含まれるソース行の列値をコピーします。ロウィを新しい行に追加します。 この文書化されていない機能を発見したことに感謝します。 これが私が行き詰まった理由の 1 つでした。私にはかなりのプログラミング経験があり、構文が十分に文書化されていれば新しい言語を理解できることがよくあるからです。 JMP のドキュメントで見つけたものには、行の追加関数が特定の行の列値のリストを含む変数をパラメータとして受け入れることができるという記載はありません。
Re: JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですかこんにちは、MDさん
私のスクリプトがお役に立てて嬉しいです。私がそれを書いたとき、アドインは利用できませんでした。
zに関して。今確認したところ必要ありませんでした。ループはそれなしでも正常に動作するはずです。 私は、for ループの通過回数をカウントするには、for ループに z を含める必要があると考えていました。
スクリプトをテストするときに、ループの番号を常に利用できるため、アクションを制御するのに役立ちました。
最高、
ロン。
Re: JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですか質問。
イベント期間に基づいて新しい行を作成するコード ブロックでは、
のために(私= 1 、私<= N列、私++、
ロウィ= dt <<行を取得する(私) ;
のために( z = 1 、 z <= ( :名前( 「イベント期間」 )[私] - 1 ) 、 z ++、
z ;
dt <<行を追加する(ロウィ) ;
dt <<数式を実行する;
) ;
) ;
ただの行は何ですかz ;する?
Re: JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですかロン、
情報をありがとう。 アドインは私にとっては機能しませんでしたが、バブル プロットの問題についてコードを確認することで、私が抱えていた問題が解決されました。 必要なスクリプトを構築するのに丸一日かかりましたが、データのギャップを埋めるために子行を追加するために提供されたコードのおかげで、そうでなければかなり長い間行き止まりのままだった部分を完了することができました。
Re: JSL を使用してデータテーブルのセルに値を配置するにはどうすればよいですかこんにちは、MDさん。
あなたの質問を完全に理解しているかどうかはわかりませんが、次の 2 つのリンクを試してください。
1)周波数列による展開アドイン
2)バブル プロット - 不等な時間間隔