次の質問は、P&G 社内の JMP ユーザー コミュニティ ページで行われました。 このフォーラムに引き継ぎます:
タイムスタンプに基づいて結合したいテーブルが 2 つあります。 ただし、データ ソースにより、同じ時間は得られません。 JMP で見つけられる唯一のオプションは完全一致です。 JMP には、パンダの結合や Excel Vlookup の動作と同様の最近接結合を使用するオプションはありますか?
P&G JMP ユーザー コミュニティは、いくつかの答えを提供しようとしました。 私たちが推奨しようとしたものよりも優れた解決策はありますか?
答え #1:
Excel に両方のテーブルを別々のシートとしてドロップし、sheet2 を参照する vlookup 列をsheet1 に追加してから、結合のために JMP にポートバックしますか? JMP に最近接一致機能があるのを見たことがありませんが、存在する場合は興味があります...
答え #2:
「最近接結合」の定義が矛盾しています。 VLOOKUP の私の記憶 (変更されていない限り) は、データ テーブル X から時間 X を取得し、X<=Y (または Y<=X) となるようにデータ テーブル Y からの最も近い時間 Y と照合することでした。特にデータ テーブル X またはデータ テーブル Y でデータが不規則な間隔で収集されている場合、非常に長いギャップが発生します。 間隔が不規則になる可能性があるため、このような結合は非常に複雑になる可能性があります。
残念ながら、JMP には迅速なアプローチはありませんが、試してみることができることがいくつかあります。
私が以前に試したアプローチの 1 つは、対象となる重要な測定値 (X 変数 = 時間) にスプラインを当てはめ、予測式を保存して、それを他のテーブルに転送することです。 正しく実行されれば、これは基本的に重要な測定値を補間し、それらを一致させます。
もう 1 つのオプションは、完全結合 (タイムスタンプが一致しない) を実行してから、数式列を作成して、データ テーブル X の時間が欠落しているかどうかを確認することです。存在する場合はデータ テーブル Y の時間を使用し、そうでない場合はデータ テーブル X の時間を使用します。次に、この新しい時間列で並べ替えます。 次に、重要な重要な測定値ごとに式を作成します。 これらの式で、重要な測定値が欠落していないかどうかを確認してください。 欠落していない場合は、重要な測定値を取得します。そうでない場合は、この新しい数式列に付けた名前に対して Lag 関数 (数式エディターの行関数グループ) を使用して、観測値を 1 行上に下げます。
答え #3:
多くの場合、結合する前に両方のタイムスタンプを同じ方法でビン化すると (たとえば、データを秒、10 秒、1 分などでビン化)、最も近い一致を作成できます。 これは、タイムスタンプが「大きく異なり」すぎず、ある程度のデータ集約を受け入れることができる限り、非常にうまく機能します。
ビニングはJMPの列関数です。
元の質問者からのフォローアップ:
ご提案ありがとうございます。 おそらく JMP の外部で結合を行い、結合後に分析を行うことになるでしょう。
他にどれだけの人がこれに遭遇するかはわかりませんが、これは、外部の追加手順ではなく、結合ダイアログにこの機能を組み込むために JMP に渡す提案かもしれません。
@ピーター・ハーシュ少なくとも今回のような場合には、理想的なデータ クリーニングおよび整理ソフトウェアとして JMP を推奨するのはおそらく賢明ではないと理解していますし、同意します。 JMP は常に、探索と分析と特殊なデータ整理タスクに強みを持っています。 時間に基づくデータ結合の問題は、現時点では、多対 1 マッピングがある場合や時間表示が一貫してオフになっている場合などに何をすべきかを意図的に決定するコーディング言語を使用して、JMP の外部で処理するのが最適です。またよろしくお願いします。
@mjoner今のところこれを JMP に追加する予定はありません。懸念されるのは、真の一致からあいまい一致への変更は、真の結合の観点からは満足できるものではないということです。ビニングを使用したり、タイムスタンプでテーブルを並べ替えたり、比較データ テーブルを使用したりすると、いくつかの課題を解決できるはずです。
@mjoner , 数式ヘッダーの右クリック オプション内の高速数式を使用した回避策があります。これにより、日付と時刻を最も近い分、秒、5 秒に四捨五入することができます。これがあいまい一致ほど便利ではないことは承知していますが、これも別のオプションです。開発が把握していることを確認します