グラフ/データテーブルからのデータの抽出<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />以下をプロットしたデータテーブルがあります。y=0 に最も近い点に対応する x 値を見つける必要があります。(最も近い) ゼロと交差する最初の 2 つの点 (赤い線) が必要です。3 番目の交差は関係ありません。
スクリプトを使用して最も近い値を見つけることができます。
値 = 0;
d = Abs((:"col" << 値を取得) - 値);
行 = Loc(d == Min(d));
表示(行);
Data Table( "DT" ) << select rows(rows);
これにより、いつ交差したかに関係なく、ゼロラインに最も近い値が返されます。

これら 2 つの x 値は、新しい列として dt に入力され、さらなる計算に使用されます。上記のスクリプトは正しい方向に進んでいますか?
ところで、私は JMP スクリプト (およびプログラミング全般) の初心者です。
ありがとう!
Re: グラフ/データテーブルからのデータの抽出計算したサマリーテーブルからデータを取得し、「テーブル」==>「そのデータを元のデータテーブルに結合」を実行すると、スクリプト内で参照できるようになります。または、データを手動で追加すると、機能します。したがって、「Half Value」という名前の列に各行に「Half Value」の値がある場合、「0」を次のように変更できます。
半額および半分の値[I+1]
If( (dt:y >= dt:半値& dt:y[I+1]<=dt:半値[I+1]......................
Re: グラフ/データテーブルからのデータの抽出最大値の半分を取得しているため、データ テーブルには、一致して x 値を取得する対応するデータ値がありません。最大値と一致する x 値を取得するためにこれを実行しましたが、これは計算値であるため、一致する値ではありません。対応する x 値を抽出するための値として半分の値を使用しようとしています。ゼロで交差する値を取得する上記のスクリプトと同様に、計算された半分の値に最も近い値を取得する必要があります。各パーツ ID の変数として半値を設定し、各パーツ ID をステップ実行して、半値に最も近い値を取得しようとしていました。
これは、パーツ ID ごとに計算される半分の値に最も近い値を取得することを除いて、ゼロに最も近い値を取得する上記のスクリプトと同様に機能します。
Re: グラフ/データテーブルからのデータの抽出私があなたの質問を正しく解釈しているのであれば、サマリーテーブルを取得し、テーブル==>パーツIDで結合マッチングを実行するのが最も簡単な方法だと思います。適切なパーツ ID の各行に最大値を追加します。
Re: グラフ/データテーブルからのデータの抽出もう一つ質問があります。データセットから収集している別のパラメーターがあり、そのパラメーターの最大値を見つける要約テーブルを作成しました。そこから、その値の半分を取得し、これを新しい列 (「半分の値」) に記録します。スクリプトで半分の値を使用して、各パーツ ID に対応する x 値を取得したいと思います。

各パーツ ID は異なる半値を持ちます。上記は、対応するステップ値を取得するために半分の値を挿入する必要があるスクリプトのセクションです。半分の値をスクリプトに適切に取り込み、各パーツ ID とそれに関連付けられた半分の値のインデックスを作成するのに問題があります。 各パーツ ID のスクリプトに正しい半分の値を挿入する最良の方法は何ですか?
Re: グラフ/データテーブルからのデータの抽出ありがとうジム!
これはうまくいきます。
Re: グラフ/データテーブルからのデータの抽出以下は、パーツ ID をミックスに組み込むためにコードを書き直したものです。
デフォルトの名前はここにあります( 1 ) ;
dt =現在のデータテーブル() ;
dtout =新しいテーブル( 「アウトプット」 、
新しい列( 「パーツID」 、キャラクター ) 、
新しい列( 「ファーストミン」 ) 、
新しい列( 「セカンドミン」 )
) ;
現在のデータテーブル(dt) ;
のために( 私= 1 、私<= N 行( dt ) - 1 、私++、
// データのループの開始時、およびパーツ ID が取得されたとき
// 変更すると、FirstMin と SecondMin の値を次のように設定する必要があります。
// 欠損値
もし(私== 1 、
最初の分= 。 ;
秒分= 。 ;,
dt :部品ID != dt :部品ID[i - 1 】 、
最初の分= 。 ;
秒分= 。 ;
) ;
// ゼロと交差する値が見つかった場合は、データを処理します
もし( (DT : y >= 0 & DT : y[i + 1 】 <= 0 ) | (DT : y <= 0 & DT : y[i + 1 】 >= 0 ) 、
もし(腹筋(DT : y ) <腹筋(DT : y[i + 1 ]) 、
分= DT : y ;
ミンロウ=私;
、
分= DT : y[i + 1 】 ;
ミンロウ=私+ 1 ;
) ;
// これが最初の交差点の場合、firstMin の値を設定します
もし(不足している(最初の分) 、
最初の分=分;
最初の行=ミンロウ;,
// これが 2 番目の交差点の場合、SecondMin の値を設定します
// また、入力データ テーブル内の行も選択します
// そして最後に最初と 2 番目の結果を出力に出力します
// データ表
// 最初の 2 つの交差点のデータのみを収集しているため
// そして、FirstMin と SecondMin の値を使用しています。
// スクリプト内のトリガーとして欠落しています (First と Second の両方に 1 回)
// 最小値は実際の値に設定され、後続のすべての交差
// パーツ ID の変更が検出されるまで無視されます
不足している(秒分) 、
秒分=分;
2 行目=ミンロウ;
// 入力データ テーブルに戻って行を選択します
現在のデータテーブル(dt) ;
選択済み(行の状態( ファーストロウ ) = 1 ;
選択済み(行の状態( 2 行目 ) = 1 ;
dtout <<行を追加する( 1 ) ;
dtout :パーツID[ N 行( dtout )] = dt :部品ID[2行目] ;
dtout :最初の分[ N 行(dtout)] =最初の分;
dtout :秒分[ N 行(dtout)] =秒分;
) ;
) ;
) ;
Re: グラフ/データテーブルからのデータの抽出このスクリプトで多くの部分を含むテーブルをステップ実行することに関するもう 1 つの質問。データテーブルには 3 つの列があります。パーツ ID、ステップ、値。さまざまなパーツがあり、それぞれに数百の手順があります。上記のように、テーブル内の固有のパーツ ID ごとに 2 つのゼロクロッシングを取得したいと考えています。一意のパーツ ID を取得し、上記のスクリプトに挿入して各パーツ ID に必要な 2 つの値を取得する方法に関する最善の方法がわかりませんか?
Re: グラフ/データテーブルからのデータの抽出ありがとうジム!
これはまさに私が必要としていたものであり、あなたの投稿で説明したように機能します。現在、収集したデータをさらなる分析スクリプトに組み込む作業を行っています。
再度、感謝します。
Re: グラフ/データテーブルからのデータの抽出これにアプローチする必要がある方法は、データを通過させてから、データが 1 回目と 2 回目にゼロを横切る時間を見つけることだと思います。データが 0 と交差する場合、どの値がゼロに最も近いかを見つけて、その値と行を記録します。次に、2 回目に同じ動作を繰り返してから、読み取りを停止します。最後に、見つかった行を選択します。これは、上で説明したことを正確に実行する単純なスクリプトです。
デフォルトの名前はここにあります( 1 ) ;
dt =現在のデータテーブル() ;
最初の分= 。 ;
秒分= 。 ;
のために( 私= 1 、私<= N 行( dt ) - 1 、私++、
もし( ( : y >= 0 & : y[i + 1 ] <= 0 ) | ( : y <= 0 & : y[i + 1 ] >= 0 ) 、
もし(腹筋( : y ) <腹筋( : y[i + 1 ]) 、
分= : y ;
ミンロウ=私;
、
分= : y[i + 1 】 ;
ミンロウ=私+ 1 ;
) ;
もし(不足している(最初の分) 、
最初の分=分;
最初の行=ミンロウ;
、
秒分=分;
2 行目=ミンロウ;
壊す() ;
) ;
) ;
選択された(行状態(ファーストロウ)) = 1 ;
選択された(行状態(2行目)) = 1 ;